Coder Social home page Coder Social logo

dftd3 / simple-dftd3 Goto Github PK

View Code? Open in Web Editor NEW
46.0 3.0 19.0 1.61 MB

reimplementation of the DFT-D3 program

Home Page: https://dftd3.readthedocs.io

License: GNU Lesser General Public License v3.0

Meson 0.54% Fortran 95.16% C 0.41% Python 3.26% CMake 0.58% Shell 0.05%
quantum-chemistry dispersion-correction ase computational-chemistry pyscf qcschema

simple-dftd3's Introduction

The D3 dispersion model

Latest Version LGPL-3.0-or-later CI Documentation docs codecov

A simple drop-in replacement for dftd3.

This program provides a small and easy to use implementation of the DFT-D3 dispersion correction (see JCP 132, 154104 (2010) and JCC 32, 1456 (2011) for details).

It is mostly based on the dftd4 program and borrows one or two ideas from the implementation in ased3.

Installation

Conda package

Conda Version Conda Version

This project is packaged for the conda package manager and available on the conda-forge channel. To install the conda package manager we recommend the miniforge installer. If the conda-forge channel is not yet enabled, add it to your channels with

conda config --add channels conda-forge

Once the conda-forge channel has been enabled, this project can be installed with:

conda install simple-dftd3

If you want to enable the Python API as well install

conda install dftd3-python

It is possible to list all of the versions available on your platform with:

conda search simple-dftd3 --channel conda-forge

Now you are ready to use s-dftd3.

Building from Source

To build this project from the source code in this repository you need to have a Fortran compiler supporting Fortran 2008 and one of the supported build systems:

  • meson version 0.55 or newer, with a build-system backend, i.e. ninja version 1.7 or newer
  • cmake version 3.14 or newer, with a build-system backend, i.e. ninja version 1.10 or newer
  • fpm version 0.3.0 or newer

Meson is the primary build system and provides feature-complete functionality of this project. CMake and fpm support is available but the functionality of the project is limited. This project is currently tested with GCC 9 on Ubuntu, MacOS and Windows as well as Intel Fortran on Ubuntu.

Building with meson

Optional dependencies are

  • asciidoctor to build the manual page
  • FORD to build the developer documentation
  • Python 3.6 or newer with the CFFI package installed to build the Python API

Setup a build with

meson setup _build

You can select the Fortran compiler by the FC environment variable. To compile and run the projects testsuite use

meson test -C _build --print-errorlogs

If the testsuite passes you can install with

meson configure _build --prefix=/path/to/install
meson install -C _build

This might require administrator access depending on the chosen install prefix.

To include s-dftd3 in your project add the following wrap file to your subprojects directory:

[wrap-git]
directory = s-dftd3
url = https://github.com/dftd3/simple-dftd3
revision = head

You can retrieve the dependency from the wrap fallback with

sdftd3_dep = dependency('s-dftd3', fallback: ['s-dftd3', 'sdftd3_dep'])

and add it as dependency to your targets.

Building with CMake

Alternatively, this project can be build with CMake (in this case ninja 1.10 or newer is required):

cmake -B _build -G Ninja

To compile the project with CMake run

cmake --build _build

You can run the project testsuite with

pushd _build && ctest && popd

To include s-dftd3 in your CMake project retrieve it using the FetchContent module:

if(NOT TARGET s-dftd3)
  set("s-dftd3-url" "https://github.com/dftd3/simple-dftd3")
  message(STATUS "Retrieving s-dftd3 from ${s-dftd3-url}")
  include(FetchContent)
  FetchContent_Declare(
    "s-dftd3"
    GIT_REPOSITORY "${s-dftd3-url}"
    GIT_TAG "HEAD"
  )
  FetchContent_MakeAvailable("s-dftd3")
endif()

And link against the "s-dftd3" interface library.

target_link_libraries("${PROJECT_NAME}-lib" PUBLIC "s-dftd3")

Building with fpm

Invoke fpm in the project root with

fpm build

To run the testsuite use

fpm test

You can access the s-dftd3 program using the run subcommand

fpm run -- --help

To use s-dftd3 for testing include it as dependency in your package manifest

[dependencies]
s-dftd3.git = "https://github.com/dftd3/simple-dftd3"

Usage

DFT-D3 calculations can be performed with the s-dftd3 executable. To calculate the dispersion correction for PBE0-D3(BJ)-ATM run:

s-dftd3 --bj pbe0 --atm coord

In case you want to access the DFT-D3 results from other programs, dump the results to JSON with (the --noedisp flag prevents the .EDISP file generation):

s-dftd3 --bj pbe0 --atm --json --noedisp --grad struct.xyz

Dispersion related properties can be calculated as well:

s-dftd3 --property geo.gen

For an overview over all command line arguments use the --help argument or checkout the s-dftd3(1) manpage.

API access

This DFT-D3 implementation provides first class API support Fortran, C and Python. Other programming languages should try to interface via one of those three APIs. To provide first class API support for a new language the interface specification should be available as meson build files.

Fortran API

The recommended way to access the Fortran module API is by using dftd3 as a meson subproject. Alternatively, the project is accessible by the Fortran package manager (fpm) or as CMake subproject as explained above.

The complete API is available from dftd3 module, the individual modules are available to the user as well but are not part of the public API and therefore not guaranteed to remain stable. API compatibility is only guaranteed for the same minor version, while ABI compatibility cannot be guaranteed in a pre 1.0 stage.

The communication with the Fortran API uses the error_type and structure_type of the modular computation tool chain library (mctc-lib) to handle errors and represent geometries, respectively.

C API

The C API provides access to the basic Fortran objects and their most important methods to interact with them. All Fortran objects are available as opaque void* in C and can only be manipulated with the correct API calls. To evaluate a dispersion correction in C four objects are available:

  1. the error handler:

    Simple error handler to carry runtime exceptions created by the library. Exceptions can be handled and/or transfered to the downstream error handling system by this means.

  2. the molecular structure data:

    Provides a representation of the molecular structure with immutable number of atoms, atomic species, total charge and boundary conditions. The object provides a way to update coordinates and lattice parameters, to update immutable quantities the object has to be recreated.

  3. the dispersion model:

    Instantiated for a given molecular structure type, it carries no information on the geometry but relies on the atomic species of the structure object. Recreating a structure object requires to recreate the dispersion model as well.

  4. the damping parameters:

    Damping parameter object determining the short-range behaviour of the dispersion correction. Standard damping parameters like the rational damping are independent of the molecular structure and can easily be reused for several structures or easily exchanged.

The user is responsible for creating and deleting the objects to avoid memory leaks.

Python API

The Python API is disabled by default and can be built in-tree or out-of-tree. The in-tree build is mainly meant for end users and packages. To build the Python API with the normal project set the python option in the configuration step with

meson setup _build -Dpython=true -Dpython_version=$(which python3)

The Python version can be used to select a different Python version, it defaults to 'python3'. Python 2 is not supported with this project, the Python version key is meant to select between several local Python 3 versions.

Proceed with the build as described before and install the projects to make the Python API available in the selected prefix.

For the out-of-tree build see the instructions in the python directory.

Contributing

This is a volunteer open source projects and contributions are always welcome. Please, take a moment to read the contributing guidelines.

License

This project is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This project is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU Lesser General Public License for more details.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the GNU Lesser General Public license, shall be licensed as above, without any additional terms or conditions.

simple-dftd3's People

Contributors

awvwgk avatar e-kwsm avatar hebrewsnabla avatar kjelljorner avatar lgtm-migrator avatar lukaswittmann avatar marvinfriede avatar rscohn2 avatar sunqm avatar tvogels avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

simple-dftd3's Issues

Which dftd3 should one use?

Thanks for the work on this!

We are bit in a dead-lock now, since there exists 3 different libraries which all say do the same thing? :)
So which one should we support :)

I see you are involved in both dftb and Grimme's group.
What I would like to see is that there is one preferred version to be used? If that means archiving one of the packages, then good! :)

Reliability of combining simple DFT-D3 and VASP with ASE interface?

Recently, I'm using simple DFT-D3 and VASP with ASE interface because some DFT-D3 parameters are not set as default in VASP. Here is part of my script:

from dftd3.ase import DFTD3
from ase.calculators.vasp import Vasp
from ase.calculators.mixing import SumCalculator
from ase.io import read, write
from ase.optimize import LBFGS, BFGS, GPMin

atoms = read('CONTCAR')
d3 = DFTD3(method='PBE', damping='d3bj')   
vasp_pbe.set(label='PBE', directory='PBE', xc='PBE') # check whether the energy is consistent with the default one in VASP
vasp_pbe_d3 = SumCalculator([d3, vasp_pbe])
del atoms.constraints
atoms.set_calculator(vasp_pbe_d3)
dyn=LBFGS(atoms)    #优化器
dyn.run(fmax=0.03)

To verify the scheme, I used CO adsorption energy as a criterion and compared the difference between simple DFT-D3 and default one in VASP. I found that the absolute energy for a specific structure is different, while the targeted adsorption energy is quite close.
Snipaste_2023-07-04_06-06-31

However, I'm still worried about the reliability of such a scheme and do you have any suggestions?

PySCF: Register dispersion energy in mf.scf_summary["dispersion"]

The dispersion energy is currently only added to the nuclear repulsion, however PySCF provides with the scf_summary dictionary in the mf object a way to record the individual contributions. It would be useful for if the PySCF wrapper could record the dispersion energy in scf_summary["dispersion"].

Add documentation for using command line interface

Include documentation for command line interface.

  • include reference for command line arguments
  • add tutorial for computing dispersion correction for dimer system
  • add tutorial for using pairwise resolved dispersion energies
  • add recipes for using custom parameters

installation by pip is broken

Hi,
I installed the s-DFTD3 successfully by pip using:

pip install dftd3

however, I tested the code by following the lines:
python -c "from dftd3.ase import DFTD3"
I got the error like this:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'dftd3.ase'; 'dftd3' is not a package

I am sure I have ASE installed because I can import ASE successfully.

Is there any idea why I got the importing error?

Thank you very much

Best,
Geng

Conda package for Python API?

Are there are plans for a Python API as for the new DFTD4? I have an interface to the old DFTD4 in ᴍᴏʀғᴇᴜs using both the D3 and the D4 calculators. I am now considering (a) dropping D3 support and only giving D4 (b) still providing interface for users who would do a manual install of the simple-dftd3 Python interface.

[Bug / Defaults] ASE DFTD3 and Simple-DFTD3 disagree?

I am trying to use the Simple-DFTD3 module but I am seeing disagreements between the ASE DFTD3 implementation and Simple-DFTD3. Importantly, ASE DFTD3 agrees with VASP but Simple-DFTD3 does not as a result. I provide here a minimum example to reproduce this issue. The difference also shows up in forces and strain if I recall correctly, but the example here just highlights the energy difference.

Is there some difference in cutoffs, many body terms, etc? I believe we use the dftd3 on conda from psi4.

#!/usr/bin/env python
from ase.io import read, write
from ase.calculators.dftd3 import DFTD3  #import ASE-D3
from dftd3.ase import DFTD3 as SimpleD3 #import Simple-D3
from ase.build import bulk

atoms = bulk("Pd") * (6,6,6)

ase_d3 = DFTD3(xc="pbe", damping="bj")
simple_d3 = SimpleD3(method="pbe", damping="d3bj")


for calculator in ase_d3, simple_d3:
    atoms.calc = calculator
    print(f"Dispersion: {calculator} {atoms.get_potential_energy()}", end="\n")

This produces the following output

(work) tgmaxson@front-0:~/D3Disagree$ python d3.py
Dispersion: <ase.calculators.dftd3.DFTD3 object at 0x7f4bbe48c250> -144.65636838944943
Dispersion: <dftd3.ase.DFTD3 object at 0x7f4c0fe20f40> -127.1336927513601

Support for D3(CSO) damping function

Add support for the CSO damping scheme proposed in https://pubs.acs.org/doi/10.1021/acs.jctc.5b00400.

Four parameter form

$$E_\text{disp} = - \sum_\text{AB}\left(s_6 + \frac{a_1}{1+\exp[R_\text{AB} - a_2 R_0^\text{AB}]}\right)\times \frac{C_6}{R^6_\text{AB} + (a_3 R_0^\text{AB} + a_4)^6}$$

One parameter form

$$E_\text{disp} = - \sum_\text{AB}\left(s_6 + \frac{a_1}{1+\exp[R_\text{AB} - 2.5 R_0^\text{AB}]}\right)\times \frac{C_6}{R^6_\text{AB} + (2.5^2)^6}$$

Published parameters

functional s6 a1
BLYP 1.0 1.28
BP86 1.0 1.01
PBE 1.0 0.24
TPSS 1.0 0.72
B3LYP 1.0 0.86
PBE0 1.0 0.20
PW6B95 1.0 -0.15
B2PLYP 0.73 0.24

Potential issues:

  • only eight functionals are parametrized with this scheme
  • unclear how D3(CSO)-ATM would work

release serial pypi version?

Recently we found pytorch pollutes openmp symbols. DFTD3 returns wrong results after the pollution. While some packages are not affected. I guess that is because the current pypi version (v1.0.0) is using the recent version (gomp_5.0) of libgomp. It is not an issue with the recent openmp, but it would be convenient to have a serial version at the same time.

pytorch/pytorch#109446 (comment)

Error due to location of _libdftd3.cpython-xxx.so

I'm compiling this project with python interface enabled by

meson setup _build -Dpython=true 
meson configure _build --prefix=/home/wsr/s-dftd3
meson install -C _build

The compilation is ok, but I got an error when import dftd3.pyscf

Traceback (most recent call last):
  File "/home/wsr/s-dftd3/lib/python3.10/site-packages/dftd3/library.py", line 25, in <module>
    from ._libdftd3 import ffi, lib
ModuleNotFoundError: No module named 'dftd3._libdftd3'

I check the location of _libdftd3 and find it's in lib64, so the library.py in lib cannot import it

wsr@yoga:~/simple-dftd3> ls ~/s-dftd3/lib64/python3.10/site-packages/dftd3/
_libdftd3.cpython-310-x86_64-linux-gnu.so
wsr@yoga:~/simple-dftd3> ls ~/s-dftd3/lib/python3.10/site-packages/dftd3/
ase.py       interface.py  parameters.py  pyscf.py     test_ase.py        test_library.py     test_pyscf.py
__init__.py  library.py    __pycache__    qcschema.py  test_interface.py  test_parameters.py  test_qcschema.py

Can this be fixed by some meson setting? I've tried change meson configure _build --prefix=/home/wsr/s-dftd3 to meson configure _build --prefix=/home/wsr/s-dftd3 --libdir=lib, but it doesn't work.
Or, can we change the way importing _libdftd3 so that its location does not matter?

parallel evaluation

Hi!

Is there a way (maybe by setting an environment variable) to parallelise the evaluation of the dispersion when using the python-API (via the ASE calculator) ?

Release version 1.0.0

This projects seems stable enough to leave the 0.x version series. This issue tracks whether there is anything that should be done prior to making the first release in the 1.x version series.

pairwise analysis inconsistent in d3 forks

This is purely informative and for searchability; feel free to close right away.

I noticed in debugging sapt0-d3m in Psi4 that the pairwise analysis from classic dftd3 -anal and simple-dftd3 (at least the qcengine interface) differ by a factor of two. Below are the rms of the returned arrays (labels are <program>_<conda channel>), but I've checked the arrays per-element, too. s-dftd3 is closer to dftd4, so I'm assuming that it's classic dftd3 that's the inconsistent definition. Rather than perpetrating another variation in d3 versions out there, I'll compensate in Psi4.

rms(dftd3_psi4)    = 0.0008701284366337631
rms(dftd3_psi4 / 2)= 0.00043506421831688153
rms(sdftd3_cf)     = 0.00043506480394359256
rms(dftd4_psi4)    = 0.00015463675259706915
rms(dftd4_cf)      = 0.0001546367518179213

Looking for (co-)maintainers

This DFT-D3 reimplementation has become somewhat stable now. Going forward I'm looking for contributors and maintainers to ensure the project remains healthy and available for the computational chemistry community.

Current status

  • fpm, meson and CMake build system support
  • compatible with GCC >=5, Intel >=18, NAG >=7
  • C and Python bindings
  • integrated with DFTB+, tblite, DFT-FE, QCEngine, Siesta, Psi4, Curcuma, Caracal

Dependencies

Project assets

Packaging status

default for s9 in dftd3

The parameters file for dftd3 has three-body scaling all defaulting to s9=0.0 or off, https://github.com/dftd3/simple-dftd3/blob/main/assets/parameters.toml#L5-L9 , and that's what gets returned from a get_all_damping_params call. But the docs and interface file show the three-body as s9=1.0 or on, https://github.com/dftd3/simple-dftd3/blob/main/python/dftd3/qcschema.py#L50 , and on is what gets computed in a qcschema run without param_tweaks being specified.

Is this an inconsistency, or am I missing something? In switching over psi4, I was prepared for three-body on, then pleasantly surprised (for consistency's sake with "classic" executable dftd3) to find it off, and now uncertain. I can make it work psi4-side either way, but I thought I'd check in for guidance. Thanks!

Build Python wheels for MacOS / Windows?

Currently Python wheels are only built for Linux using mesonpep517, since the conda-forge distribution already covers MacOS and Windows this seems like only minor issue. However, if there is sufficient interest and/or somebody is willing to contribute the respective additions to the wheel building workflow the distribution can be expanded.

Preferably we can also build Python wheels for MacOS and Windows against the conda-forge API like done in the Linux case.

Implement pairwise analysis for dispersion energy

This was a command line feature in the original dftd3 which allowed to create dispersion energies for all pairs in the system. An implementation is available in dftd4 which could be adapted for this library as well. Special care should be taken periodic systems and for calculating the pairwise representation of the ATM contribution.

Related: dftd4/dftd4#81
Patch: dftd4/dftd4#82

Default realspace cutoffs

Would it be possible to set the default (2-body) cutoff to 94.8683 a.u. as in the reference implementation as opposed to 60 a.u. right now?

Building wheels with Python 3.12 fails

Program python3 (cffi) found: YES (/tmp/build-env-g8_6itnh/bin/python) modules: cffi
Run-time dependency python found: YES 3.12
Configuring _libdftd3.h with command
Configuring _libdftd3.c with command

../dftd3/meson.build:50:19: ERROR: Command `/tmp/build-env-g8_6itnh/bin/python /__w/simple-dftd3/simple-dftd3/dftd3-1.0.0/dftd3/../ffibuilder.py /__w/simple-dftd3/simple-dftd3/dftd3-1.0.0/.mesonpy-j15lfj0y/dftd3/_libdftd3.h _libdftd3` failed with status 1.

A full log can be found at /__w/simple-dftd3/simple-dftd3/dftd3-1.0.0/.mesonpy-j15lfj0y/meson-logs/meson-log.txt

ERROR Backend subprocess exited when trying to invoke build_wheel

Added in #55 by Thijs @tvogels, reverted again on main.

Add parameters for revDSD double hybrid functionals

See https://pubs.acs.org/doi/10.1021/acs.jpca.9b03157

functionals cX,HF cC,DFT c2ab c2ss s6 a1 a2 WTMAD (kcal/mol)
DOD-SCAN66-D3(BJ) 0.66 0.5048 0.6283 [0] 0.3152 [0] 5.75 2.67
revDSD-BLYP-D3(BJ) 0.71 0.5313 0.5477 0.1979 0.5451 [0] 5.2 2.48
revDSD-PBEP86-D3(BJ) 0.69 0.4296 0.5785 0.0799 0.4377 [0] 5.5 2.42
revDSD-PBEB95-D3(BJ) 0.66 0.4960 0.4935 0.1009 0.3686 [0] 5.5 2.85
revDSD-PBE-D3(BJ) 0.68 0.4528 0.5845 0.0711 0.5746 [0] 5.5 2.72
revDOD-BLYP-D3(BJ) 0.71 0.5911 0.6216 [0] 0.6145 [0] 5.2 2.67
revDOD-PBEP86-D3(BJ) 0.69 0.4449 0.6055 [0] 0.477 [0] 5.5 2.47
revDOD-PBEB95-D3(BJ) 0.66 0.5225 0.5278 [0] 0.4107 [0] 5.5 2.92
revDOD-PBE-D3(BJ) 0.68 0.4641 0.6134 [0] 0.6067 [0] 5.5 2.73\
orig (37)DSD-BLYP-D3(BJ) 0.71 0.54 0.47 0.4 0.57 [0] 5.4 3.34
orig (37)DSD-PBEP86-D3(BJ) 0.69 0.44 0.52 0.22 0.48 [0] 5.6 3.10
orig (37)DSD-PBEB95-D3(BJ) 0.66 0.55 0.46 0.09 0.61 [0] 6.2 3.32
orig (37)DSD-PBE-D3(BJ) 0.68 0.49 0.55 0.13 0.78 [0] 6.1 3.17
B2GP-PLYP-D3(BJ) (39,55) 0.65 0.64 0.36 0.36 0.56 0.2597 6.333 3.19

Building with cmake with no internet connection

This is probably a cmake question, but I have no idea how to do it.

I'm trying to compile simple-dftd3 with cmake and ninja in a computer that doesn't allow connections to the outside world. Therefore, I've had to copy the sources of mctc-lib and compile them myself. I have already compiled mctc-lib, and trying to compile simple-dftd3 tells me that it can not find mctc-lib because of missing mctc-lib_DIR:

Screenshot from 2022-02-04 19-25-43

How can I specify mctc-lib_DIR?

Thanks!

Dispersion energy not the same between s-dftd3 binary and dftd3.interface API

Hi 😄

I'm experiencing result disaccordance between binary s-dftd3 and result from python API dftd3.interface, at least for D3-BJ with PBE0.

Results run on my computer are:

Run Type Eng. Disp. (a.u.)
original dftd3 -0.02958913
simple s-dftd3 -2.9589129838629E-02
python (prebuild param) -0.02948923293249489
python (user param) -0.029589132634178346

Difference between python (prebuild param) and other results is somehow large. Difference between s-dftd3 and python (user param) may be a result of different Angstrom->Bohr conversion constant, which is not important.

I'm not acustomed to ffi workflow, thus I havn't hacked why this happens 🥲


Steps to reproduce python (prebuild param) and python (user param)

To reproduce python (prebuild param), I shamelessly borrow the code from test code of simple-dftd3 😂
https://github.com/awvwgk/simple-dftd3/blob/4c6c7825ba25288d62047a1ecf8edaccecd7061a/python/dftd3/test_interface.py#L179-L204

To reproduce result of python (user param), substiuting RationalDampingParam(method="pbe0") by RationalDampingParam(s6=1, s8=1.2177, s9=0, a1=0.4145, a2=4.8593, alp=14) should work.

Steps to reproduce original dftd3 and simple s-dftd3

Coordinate file is defined as tm.xyz:

16
tm.xyz
H   1.47785865  2.02673935 -1.47792345
H  -0.75909124  0.22976202  2.93087098
C  -1.72653772 -1.3263511  -0.82885635
B   1.13534314 -0.46989888 -1.18849251
H  -2.27669551 -2.08300829 -0.2589304
P   0.03232026 -2.02393313 -1.17653739
O   0.21785459  0.30748145  2.94674769
Cl  2.33559684  2.07710454  1.36507466
Al  0.70755099  0.7418772   1.04528377
P   1.63167935  0.91293665 -2.34248821
B  -1.59995106  0.02348594 -0.14624446
H   0.59007699 -0.5165691   3.30980685
F   0.32776684  1.15309591 -3.28767134
P  -1.41550502  1.58846245  0.55584146
H  -2.18646012 -1.23947453 -1.82225432
P   1.50819301 -1.40171049  0.375773

Then run

$ s-dftd3 run --bj pbe0 tm.xyz
$ dftd3 tm.xyz -bj -func pbe0

I'm new to dftd3/4, so hope these scripts are the correct D3-BJ with PBE0 🥲

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.