Giter Club home page Giter Club logo

samila's Introduction


Samila


built with Python3 PyPI version Samila-Colab Discord Channel

Table of contents

Overview

Samila is a generative art generator written in Python, Samila lets you create images based on many thousand points. The position of every single point is calculated by a formula, which has random parameters. Because of the random numbers, every image looks different.

Open Hub
PyPI Counter
Github Stars
Branch master dev
CI
Code Quality codebeat badge CodeFactor

Installation

Source code

  • Download Version 1.1 or Latest Source
  • Run pip install -r requirements.txt or pip3 install -r requirements.txt (Need root access)
  • Run python3 setup.py install or python setup.py install (Need root access)

PyPI

Easy install

  • Run easy_install --upgrade samila (Need root access)

Conda

Usage

Magic

>>> import matplotlib.pyplot as plt
>>> from samila import GenerativeImage
>>> g = GenerativeImage()
>>> g.generate()
>>> g.plot()
>>> plt.show()

Basic

>>> import random
>>> import math
>>> def f1(x, y):
    result = random.uniform(-1,1) * x**2  - math.sin(y**2) + abs(y-x)
    return result
>>> def f2(x, y):
    result = random.uniform(-1,1) * y**3 - math.cos(x**2) + 2*x
    return result
>>> g = GenerativeImage(f1, f2)
>>> g.generate()
>>> g.plot()
>>> g.seed
188781
>>> plt.show()

Projection

>>> from samila import Projection
>>> g = GenerativeImage(f1, f2)
>>> g.generate()
>>> g.plot(projection=Projection.POLAR)
>>> g.seed
829730
>>> plt.show()

  • Supported projections : RECTILINEAR, POLAR, AITOFF, HAMMER, LAMBERT, MOLLWEIDE and RANDOM
  • Default projection is RECTILINEAR

Marker

>>> from samila import Marker
>>> g = GenerativeImage(f1, f2)
>>> g.generate()
>>> g.plot(marker=Marker.CIRCLE, spot_size=10)
>>> g.seed
448742
>>> plt.show()

  • Supported markers : POINT, PIXEL, CIRCLE, TRIANGLE_DOWN, TRIANGLE_UP, TRIANGLE_LEFT, TRIANGLE_RIGHT, TRI_DOWN, TRI_UP, TRI_LEFT, TRI_RIGHT, OCTAGON, SQUARE, PENTAGON, PLUS, PLUS_FILLED, STAR, HEXAGON_VERTICAL, HEXAGON_HORIZONTAL, X, X_FILLED, DIAMOND, DIAMON_THIN, VLINE, HLINE and RANDOM
  • Default marker is POINT

Rotation

You can even rotate your art by using rotation parameter. Enter your desired rotation for the image in degrees and you will have it.

>>> g = GenerativeImage(f1, f2)
>>> g.generate()
>>> g.plot(rotation=45)
  • Default rotation is 0

Range

>>> g = GenerativeImage(f1, f2)
>>> g.generate(start=-2*math.pi, step=0.01, stop=0)
>>> g.plot()
>>> g.seed
234752
>>> plt.show()

Color

>>> g = GenerativeImage(f1, f2)
>>> g.generate()
>>> g.plot(color="yellow", bgcolor="black", projection=Projection.POLAR)
>>> g.seed
1018273
>>> plt.show()

  • Supported colors are available in VALID_COLORS list

  • color and bgcolor parameters supported formats:

    1. Color name (example: color="yellow")
    2. RGB/RGBA (example: color=(0.1,0.1,0.1), color=(0.1,0.1,0.1,0.1))
    3. Hex (example: color="#eeefff")
    4. Random (example: color="random")
    5. Complement (example: color="complement", bgcolor="blue")
    6. Transparent (example: bgcolor="transparent")
    7. List (example: color=["black", "#fffeef",...])

⚠️ Transparent mode is only available for background

⚠️ List mode is only available for color

⚠️ In List mode, the length of this list must be equal to the lengths of data1 and data2

Point Color

You can make your custom color map and use it in Samila

>>> colorarray = [
...  [0.7, 0.2, 0.2, 1],
...  [0.6, 0.3, 0.2, 1],
...  "black",
...  [0.4, 0.4, 0.3, 1],
...  [0.3, 0.4, 0.4, 1],
...  "#ff2561"]
>>> g.generate()
>>> g.seed
454893
>>> g.plot(cmap=colorarray, color=g.data2, projection=Projection.POLAR)
>>> plt.show()

Regeneration

>>> g = GenerativeImage(f1, f2)
>>> g.generate(seed=1018273)
>>> g.plot(projection=Projection.POLAR)
>>> plt.show()

NFT.storage

Upload generated image directly to NFT.storage

>>> g.nft_storage(api_key="YOUR_API_KEY", timeout=5000)
{'status': True, 'message': 'FILE_LINK'}

You can also upload your config/data to nft storage as follows:

>>> g.nft_storage(api_key="API_KEY", upload_config=True)
{'status': {'image': True, 'config':True}, 'message': {'image':'IMAGE_FILE_LINK', 'config':'CONFIG_FILE_LINK'}

or

>>> g.nft_storage(api_key="API_KEY", upload_data=True)
{'status': {'image': True, 'data':True}, 'message': {'image':'IMAGE_FILE_LINK', 'data':'DATA_FILE_LINK'}
  • Default timeout is 3000 seconds

Save image

Save generated image

>>> g.save_image(file_adr="test.png")
{'status': True, 'message': 'FILE_PATH'}

Save generated image in higher resolutions

>>> g.save_image(file_adr="test.png", depth=5)
{'status': True, 'message': 'FILE_PATH'}

Save data

Save generated image data

>>> g.save_data(file_adr="data.json")
{'status': True, 'message': 'FILE_PATH'}

So you can load it into a GenerativeImage instance later by

>>> g = GenerativeImage(data=open('data.json', 'r'))

Data structure:

{
  "plot": {
    "projection": "polar",
    "bgcolor": "black",
    "color": "snow",
    "spot_size": 0.01
  },
  "matplotlib_version": "3.0.3",
  "data1": [
    0.3886741692042526,
    22.57390286376703,
    -0.1646310981668766,
    66.23632344600155
  ],
  "data2": [
    -0.14588750183600108,
    20.197945942677833,
    0.5485453260942901,
    -589.3284610518896
  ]
}

Save config

Save generated image config. It contains string formats of functions which is also human readable.

>>> g.save_config(file_adr="config.json")
{'status': True, 'message': 'FILE_PATH'}

So you can load it into a GenerativeImage instance later by

>>> g = GenerativeImage(config=open('config.json', 'r'))

Config structure:

{
    "matplotlib_version": "3.0.3",
    "generate": {
        "seed": 379184,
        "stop": 3.141592653589793,
        "step": 0.01,
        "start": -3.141592653589793
    },
    "f2": "random.uniform(-1,1)*math.cos(x*(y**3))+random.uniform(-1,1)*math.ceil(y-x)",
    "f1": "random.uniform(-1,1)*math.ceil(y)-random.uniform(-1,1)*y**2+random.uniform(-1,1)*abs(y-x)",
    "plot": {
        "color": "snow",
        "bgcolor": "black",
        "projection": "polar",
        "spot_size": 0.01
    }
}

Mathematical details

Samila is simply a transformation between a square-shaped space from the Cartesian coordinate system to any arbitrary coordination like Polar coordinate system.

Example

We have set of points in the first space (left square) which can be defined as follow:

And below functions are used for transformation:

>>> def f1(x, y):
    result = random.uniform(-1,1) * x**2 - math.sin(y**2) + abs(y-x)
    return result
>>> def f2(x, y):
    result = random.uniform(-1,1) * y**3 - math.cos(x**2) + 2*x
    return result

here we use Projection.POLAR so later space will be the polar space and we have:

>>> g = GenerativeImage(f1, f2)
>>> g.generate(seed=10)
>>> g.plot(projection=Projection.POLAR)

Try Samila in your browser!

Samila can be used online in interactive Jupyter Notebooks via the Binder or Colab services! Try it out now! :

Binder

Google Colab

  • Check examples folder

Issues & bug reports

Just fill an issue and describe it. We'll check it ASAP! or send an email to [email protected].

  • Please complete the issue template

You can also join our discord server

Discord Channel

Social media

  1. Instagram
  2. Telegram
  3. Twitter
  4. Discord

References

1- Schönlieb, Carola-Bibiane, and Franz Schubert. "Random simulations for generative art construction–some examples." Journal of Mathematics and the Arts 7.1 (2013): 29-39.
2- Create Generative Art with R
3- NFT.storage : Free decentralized storage and bandwidth for NFTs

Acknowledgments

This project was funded through the Next Step Microgrant, a program established by Protocol Labs.

Show your support

Star this repo

Give a ⭐️ if this project helped you!

Donate to our project

If you do like our project and we hope that you do, can you please support us? Our project is not and is never going to be working for profit. We need the money just so we can continue doing what we do ;-) .

Bitcoin

1KtNLEEeUbTEK9PdN6Ya3ZAKXaqoKUuxCy

Ethereum

0xcD4Db18B6664A9662123D4307B074aE968535388

Litecoin

Ldnz5gMcEeV8BAdsyf8FstWDC6uyYR6pgZ

Doge

DDUnKpFQbBqLpFVZ9DfuVysBdr249HxVDh

Tron

TCZxzPZLcJHr2qR3uPUB1tXB6L3FDSSAx7

Ripple

rN7ZuRG7HDGHR5nof8nu5LrsbmSB61V1qq

Binance Coin

bnb1zglwcf0ac3d0s2f6ck5kgwvcru4tlctt4p5qef

Tether

0xcD4Db18B6664A9662123D4307B074aE968535388

Dash

Xd3Yn2qZJ7VE8nbKw2fS98aLxR5M6WUU3s

Stellar

GALPOLPISRHIYHLQER2TLJRGUSZH52RYDK6C3HIU4PSMNAV65Q36EGNL

Zilliqa

zil1knmz8zj88cf0exr2ry7nav9elehxfcgqu3c5e5

Coffeete

Gitcoin

samila's People

Contributors

dependabot[bot] avatar evanofslack avatar mhmoslemi2338 avatar omahs avatar sadrasabouri avatar sepandhaghighi 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

samila's Issues

Mathematics Details

Description

Maybe it's better if we have a section in README.md which we demonstrate the mathematics behind the Samila arts.
If it's OK I can handle it.

Warning and error for different color modes

Description

Handle warning and error for different color/bgcolor modes

  1. color="complement", bgcolor="complement" (My suggestion: Runtime Warning)
  2. color or bgcolor format is wrong (My suggestion: SamilaPlot Error) (For formats other than string)
  3. color or bgcolor name is not correct (My suggestion: Runtime Warning) (Only color name)

Create Samila Art From Files

Description

We may come up with a solid behavior toward all file types to make Samila art from them. This issue tracker will be a place to discuss about:

  • How we can come up with that general solution?

Steps/Code to Reproduce

It may sound like this:

>>> g = Samila(path2file)

Expected Behavior

It will decode the file content into two functions (known as f1 and f2) and give construct a GenerativeImage instance then return it back.

Samila Version (Use : samila.__version__)

0.1

Data Load/Save for GenerativeImage Class

Description

You can make a unique Samila art with a pair of function and a random seed. Also you can plot your art with different configurations like projection, color and etc.

It would be nice if we have a config parameter which initialize some settings for desired art (with the lower priority against other parameter i.e replaced by them). It could be JSON file like bellow:

{
"f1": "random.uniform(-1, 1) * y + math.cos(x ** 2)",
"f2": "random.uniform(-1, 1) * x**2 + math.sin(y)",
"generate":
    {
    "seed": 10
    },
"plot":
    {
    "projection": Projection.POLAR
    }
}

which makes a unique picture (bellow):
Figure_5

Steps/Code to Reproduce

>>> g = GenerativeImage(config=path2JSON)

Expected Behavior

Generate the Samila art based on given configs.

Samila Version (Use : samila.__version__)

0.1

Tasks

  • save_config method

Add Notebook Examples

Description

We can have some *.ipynb files providing some examples from Samila use.

Diffrent Point Colors in a Plot

Description

We can define a color gradient which can be applied on points to make such a gorgeous arts:
Figure_1

[Note] : this is a discrete color gradient example but in general case we can use continues form which will be more attractable.

Unhandled exception while deleting

Description

This bug occurs when you're using atplotlib pyplot figure to see your art when you close the matplotlib figure.

Steps/Code to Reproduce

import matplotlib.pyplot as plt
from samila import GenerativeImage, Projection

g = GenerativeImage()
g.generate()
g.plot()
plt.show()

After running this code when you close the matplotlib figure, you'll see:

Expected Behavior

Nothing

Actual Behavior

Exception ignored in: <function GenerativeImage.__del__ at 0x7f258fede1f0>
Traceback (most recent call last):
  File "/home/user/Programing/Git/samila/samila/genimage.py", line 200, in __del__
  File "/home/user/.local/lib/python3.8/site-packages/matplotlib/figure.py", line 2762, in clf
  File "/home/user/.local/lib/python3.8/site-packages/matplotlib/figure.py", line 925, in delaxes
  File "/home/user/.local/lib/python3.8/site-packages/matplotlib/cbook/__init__.py", line 292, in process
  File "/home/user/.local/lib/python3.8/site-packages/matplotlib/cbook/__init__.py", line 96, in _exception_printer
  File "/home/user/.local/lib/python3.8/site-packages/matplotlib/cbook/__init__.py", line 287, in process
  File "/home/user/.local/lib/python3.8/site-packages/matplotlib/figure.py", line 2894, in <lambda>
  File "/home/user/.local/lib/python3.8/site-packages/matplotlib/backend_bases.py", line 2799, in notify_axes_change
  File "/home/user/.local/lib/python3.8/site-packages/matplotlib/backend_bases.py", line 3302, in update
  File "/home/user/.local/lib/python3.8/site-packages/matplotlib/backends/backend_qt.py", line 797, in set_history_buttons
RuntimeError: wrapped C/C++ object of type QAction has been deleted

Operating System

Ubuntu 20.04

Python Version

3.8

Matlplotlib Version

3.5.1

Samila Version (Use : samila.__version__)

0.5

Random Functions

Description

Samila tends to be plug and play so it'll be better if we consider two functions (known as f1 and f2) to be assigned to a random function.
Construction of a random function it's not that much straightforward and this issue tracker is going to discuss about it.

Steps/Code to Reproduce

g = GenerativeImage(f1, f2)

Expected Behavior

Construct a Samila generative art with two random functions.

Actual Behavior

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() missing 2 required positional arguments: 'function1' and 'function2'

Operating System

Linux 5.4.0-88-generic #99-Ubuntu

Python Version

3.8.10

Samila Version (Use : samila.__version__)

0.1

Alpha Value

Set default value of alpha to DEFAULT_ALPHA=0.1.

README Bugs

Description

There are some bugs in README.md.
This issue is addressing these bugs and track them.

Bugs

  • PyPI Counter
    The link to pypi counter should be https://pepy.tech/project/samila instead of https://pepy.tech/count/samila

Save Method

Description

We need a method which can save Samila arts into different types of images.
It would need to just save the generated plot.

Steps/Code to Reproduce

>>> g.save(filename="samile.png")

Expected Behavior

Save the plotted art into a given filename file.

Actual Behavior

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'GenerativeImage' object has no attribute 'save'

Samila Version (Use : samila.__version__)

0.1

Docs

Tasks

  • Functions docstring
  • A Proper README.md file should be provided. (Also we can use later repository README.md file as a template)
  • Complete MINIMAL_DESCRIPTION from here.
  • Complete long_description from here.
  • Add proper About section for Github repository.
  • Add some examples
  • CONTRIBUTING.md
  • CODE_OF_CONDUCT.md
  • INSTALL.md

Complex Numbers Bug

Description

Complex numbers cause issues in the data plot and save, it seems we should discard the imaginary part.
Example :

>>> s = 3 + 5j
>>> s.real
3.0

Operating System

Windows 10

Python Version

Python 3.5.5

Samila Version (Use : samila.__version__)

0.2

Plot from JSON

Description

You can make a unique Samila art with a pair of function and a random seed. Also you can plot your art with different configurations like projection, color and etc.

It would be nice if we have a config parameter which initialize some settings for desired art (with the lower priority against other parameter i.e replaced by them). It could be JSON file like bellow:

{
"f1": "random.uniform(-1, 1) * y + math.cos(x ** 2)",
"f2": "random.uniform(-1, 1) * x**2 + math.sin(y)",
"generate":
    {
    "seed": 10
    },
"plot":
    {
    "projection": Projection.POLAR
    }
}

which makes a unique picture (bellow):
Figure_5

Due to function serializing issues this option can just bee used as a input form so we can not save a JSON for configs.

Steps/Code to Reproduce

>>> g = GenerativeImage(config=config_json)

where config_json is a JSON object with a specific format.

Expected Behavior

Generate the Samila art based on given configs.

Test System

Description

Samila needs a covering test system guaranteeing well performance of it.

Including :

  • unit tests which checks if all the functions are working well
  • and also if the generated art is the same as we expected to be

This issue will track the discussion about this test system and will be connected to a PR solving it.

Tasks

  • Discuss about test system architecture
  • Deploy unit tests
  • Deploy integration tests
  • Add Codecov support

Support HTML color codes

Description

Support HTML color codes

Reference: https://matplotlib.org/1.4.2/api/colors_api.html

Steps/Code to Reproduce

>>> from samila import *
>>> g = GenerativeImage()
>>> g.generate()
>>> g.plot(color="#EEE245", bgcolor="#000000")

Expected Behavior

Color: "#EEE245" (Yellow)
Background Color: "#000000"(Black)

Actual Behavior

Color: Blue
Background Color: Blue

Operating System

Windows 10

Python Version

3.6.5

Samila Version (Use : samila.__version__)

0.6

How do you define the S1 space

I understand that in the example you provide, x and y are defined between -pi and +pi. However, how do you define this space so the image will be generated between this numbers? I think I need a deeper explanation of how the parameters in the functions work to generate the transformation.

Background Bug

Description

Background color bug in some projections

Steps/Code to Reproduce

>>> import random
>>> import math
>>> import matplotlib.pyplot as plt
>>> from samila import GenerativeImage
>>> def f1(x,y):
    result = random.uniform(-1,1) * x**2  - math.sin(y**2) + abs(y-x)
    return result
>>> def f2(x,y):
    result = random.uniform(-1,1) * y**3 - math.cos(x**2) + 2*x
    return result
>>> from samila import Projection
>>> g = GenerativeImage(f1,f2)
>>> g.generate(seed=1018273)
>>> g.plot(color="yellow",bgcolor="black",projection=Projection.POLAR)
>>> plt.show()

Expected Behavior

Solid black background

Actual Behavior

Figure_1

Operating System

Windows 10

Python Version

Python 3.5.5

Samila Version (Use : samila.__version__)

0.2

Support RGB Color

  • CSS Colors Support
  • Lev. Distance for strings
  • Tuples for RGB Colors

Discord Channel

Description

Discord channel would be a nice place for Samila's users to share their experiences using samila, request new features and/or issue and etc.

We can made a discord badge linking to our channel using this tutorial.

Invalid equation warning

Description

For some functions in some ranges there might be some computation-time errors which are not handled as an exception yet in Samila. This issue tracker would tack our solution to this problem.

Steps/Code to Reproduce

>>> from samila import *
>>> def f1(x, y):
...     return 1 / x
...
>>> def f2(x, y):
...     return y
...
>>> g = GenerativeImage(f1, f2)
>>> g.generate(start=0, stop=0.1)

Expected Behavior

A decent warning could be shown up and the program continue to generate other points.

Actual Behavior

Traceback (most recent call last):
    ...
ZeroDivisionError: float division by zero

Operating System

Ubuntu 20.04

Python Version

3.8.10

Samila Version (Use : samila.__version__)

0.6

Upload data to IPFS

Description

Upload data file to IPFS

>>> from samila import *
>>> g = GenerativeImage()
>>> g.generate()
>>> g.plot()
>>> g.nft_storage(api_key="API_KEY", data_upload=True)
{'status': {'image':True, 'data':True}, 'message': {'image':'IMAGE_FILE_LINK', 'data':'DATA_FILE_LINK'}

Add linewidth parameter to plot method

Description

It seems that this parameter has a significant effect on the output

Linewidth: 1.2 | Spot Size: 0.1

l12_s01

Linewidth: 1.2 | Spot Size: 10

112_s10

Linewidth: 12 | Spot Size: 0.1

l120_s01

Linewidth: 12 | Spot Size: 10

1120_s10

Test Coverage Enhancement

Description

Codecov percentage is currently 88% and I believe I can cover more than that with tests.

Bug in Point Colors

Description

There's a odd bug in which when you call plot method without any color parameter it'll generate a Samila art with a color different from DEFAULT_COLOR which is black.


[Probable solution]: I change edgecolor to c here and it became OK.

Steps/Code to Reproduce

from samila import *
import math
import random
import matplotlib.pyplot as plt

def f1(x, y):
    return random.uniform(-1, 1) * np.cos(x ** 2) ** 2 + np.floor(x - y) + 2 * x

def f2(x, y):
    return random.gauss(0, 2) + 2 * x - y**3 + random.uniform(-3, 3) * np.cos(x * y)


GI = GenerativeImage(f1, f2)
GI.generate(step=0.01, seed=10)
GI.plot(projection=Projection.POLAR,
        spot_size=2)
plt.show()

Expected Behavior

Figure_2

Actual Behavior

Figure_1

Operating System

Ubuntu 20.04

Python Version

3.8

Matplotlib Version

3.4.3

Samila Version (Use : samila.__version__)

0.3

Support transparent background

Description

Support transparent background

Steps/Code to Reproduce

>>> from samila import *
>>> g = GenerativeImage()
>>> g.generate()
>>> g.plot(bgcolor="transparent")

Expected Behavior

Transparent background

Actual Behavior

>>> g.bgcolor
'orangered'

Operating System

Windows 10

Python Version

3.6.5

Samila Version (Use : samila.__version__)

0.6

Bots In Social Networks

Description

  • Telegram Bot
    A bot which can generate art given it's configs(#33)
  • Twitter Bot
    A twitter bot which generate a random Samila art each day and alternate it with its config(#33) for those who wanted to regenerate it.
  • Telegram Channel
    A channel that works the same like Twitter bot, but write down configs in the file caption instead.

Upload config to IPFS

Description

Upload config file to IPFS

>>> from samila import *
>>> g = GenerativeImage()
>>> g.generate()
>>> g.plot()
>>> g.nft_storage(api_key="API_KEY", config_upload=True)
{'status': {'image':True, 'config':True}, 'message': {'image':'IMAGE_FILE_LINK', 'config':'IMAGE_FILE_LINK'}

Memory leakage

Description

It seems Python garbage collector cant automatically free up resources consumed by matplotlib

Steps/Code to Reproduce

from samila import *
for i in range(100):
    g = GenerativeImage()
    result = g.save_image("{}.png".format(i), depth=5)
    print(result)

Expected Behavior

Generate 100 images

Actual Behavior

Crash after 20-25

Operating System

Windows 10

Python Version

3.6.5

Samila Version (Use : samila.__version__)

0.4

Make Movable Arts

Description

Beside constant pictures we may think of a gif or mp4 art which should consist of several GenerativeImage each with a slight change respected to its latest to grantee the continuity of gif.

Steps/Code to Reproduce

g = GenerativeGIF()

Samila Version (Use : samila.__version__)

0.1

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.