GithubHelp home page GithubHelp logo

pyphysio's People

Contributors

alebat avatar andbiz avatar marcomina 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pyphysio's Issues

Error in Warning

How to reproduce:

from __future__ import division
import numpy as np
import pandas as pd
import pyphysio as ph

FILE = '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/sample_data/medical.txt'
FSAMP = 2048
TSTART = 0

data = np.loadtxt(FILE, delimiter='\t')
ecg = ph.EvenlySignal(data[:, 0], sampling_freq = FSAMP, signal_nature = 'ECG', start_time = TSTART)

ecg_bp = ph.IIRFilter(fp=[10, 50], fs=[0.01, 70])(ecg) # <== 

Traceback (most recent call last):

  File "<ipython-input-43-61d61d81a620>", line 1, in <module>
    ecg_bp = ph.IIRFilter(fp=[10, 50], fs=[0.01, 70])(ecg)  # OK

  File "pyphysio/BaseAlgorithm.py", line 50, in __call__
    return self.get(data, self._params)

  File "pyphysio/BaseAlgorithm.py", line 79, in get
    return cls.algorithm(data, kwargs)

  File "pyphysio/filters/Filters.py", line 175, in algorithm
    cls.warn(cls.__name__ + ': Filter parameters allow no solution. Returning original signal.')

  File "pyphysio/BaseAlgorithm.py", line 144, in warn
    cls.emulate_log([l])

  File "pyphysio/BaseAlgorithm.py", line 168, in emulate_log
    map(lambda f, m: f(m), log)

TypeError: <lambda>() takes exactly 2 arguments (1 given)

Segmentation label/Custom

An additional window (end part of the signal, label=2) is expected.

# import libraries
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt

# for windowed plots
get_ipython().magic(u'matplotlib qt')

# import all pyphysio classes and methods
import pyphysio as ph 


# In[2]:

# import data and creating a signal

ecg_data = ph.TestData.ecg()

fsamp = 2048
ecg = ph.EvenlySignal(values = ecg_data, sampling_freq = fsamp, signal_nature = 'ecg')


# In[3]:

ecg.plot()


# ** Step 1: Filtering and preprocessing **

# In[4]:

# (optional) IIR filtering : remove high frequency noise
ecg = ph.IIRFilter(fp=45, fs = 50, ftype='ellip')(ecg)


# In[5]:

# normalization : normalize data
ecg = ph.Normalize(norm_method='standard')(ecg)


# In[6]:

# resampling : increase the sampling frequency by cubic interpolation
ecg = ecg.resample(fout=4096, kind='cubic')
fsamp = 4096


# In[7]:

ecg.plot()


# ** Step 2: Information Extraction **
# 
# The information we want to extract from the ECG signal is the position of the heartbeats and the Inter Beat Interval signal.

# In[8]:

ibi = ph.BeatFromECG()(ecg)


# In[9]:

# check results so far
ax1 = plt.subplot(211)
ecg.plot()
plt.vlines(ibi.get_times(), np.min(ecg), np.max(ecg))

plt.subplot(212, sharex = ax1)
ibi.plot('o-')
plt.vlines(ibi.get_times(), np.min(ibi), np.max(ibi))
plt.show()


# ** Step 3: Physiological Indicators **

# In[10]:

# define a list of indicators we want to compute
hrv_indicators = [ph.Mean(name='RRmean'), ph.StDev(name='RRstd'), ph.RMSSD(name='rmsSD'), 
              ph.PowerInBand(name = 'HF', interp_freq=4, freq_max=0.4, freq_min=0.15, method = 'ar'),
              ph.PowerInBand(name = 'LF', interp_freq=4, freq_max=0.15, freq_min=0.04, method = 'ar')
             ]


# In[11]:

# create fake label
label = np.zeros(1200)

label[300:600] = 1

label[900:1200] = 2

label = ph.EvenlySignal(label, sampling_freq = 10, signal_nature = 'label')


# In[25]:

# check label
ax1 = plt.subplot(211)
ibi.plot('.-')

plt.subplot(212, sharex = ax1)
label.plot('.-')
plt.show()


# In[16]:

#fixed length windowing
fixed_length = ph.FixedSegments(step = 5, width = 20, labels = label)

indicators, col_names = ph.fmap(fixed_length(ibi), hrv_indicators)


# In[19]:

# extract column with the labels for each window
label_w = indicators[:, np.where(col_names == 'label')[0]]

# extract column with the RRmean values computed from each window
rrmean_w = indicators[:, np.where(col_names == 'RRmean')[0]]

# create a box and whisker plot
plt.boxplot([rrmean_w[label_w==1], rrmean_w[label_w==2]],  
            labels=['image1', 'image2'])
plt.show()


# In[21]:

#label based windowing
label_based = ph.LabelSegments(labels = label)

indicators, col_names = ph.fmap(label_based(ibi), hrv_indicators)


# In[23]:

indicators[:,0:2]


# In[32]:

custom_based = ph.CustomSegments(begins = [0, 30, 60, 90], ends = [30, 60, 90, label.get_duration()], labels=label, drop_shorter=False, drop_mixed=False)

indicators, col_names = ph.fmap(custom_based, hrv_indicators, ibi)

indicators[:,0:2]


# In[29]:

len(label)


# In[ ]:




# ### 2.2 EDA processing pipeline

# ** Step 0: Import data **

# In[ ]:

# import data and creating a signal

eda_data = ph.TestData.eda()

fsamp = 2048
eda = ph.EvenlySignal(values = eda_data, sampling_freq = fsamp, signal_nature = 'eda')

eda.plot()


# ** Step 1: Filtering and preprocessing **

# In[ ]:

# resampling : decrease the sampling frequency by cubic interpolation
eda = eda.resample(fout=8, kind='cubic')


# In[ ]:

# IIR filtering : remove high frequency noise
eda = ph.IIRFilter(fp=0.8, fs = 1.1, ftype='ellip')(eda)


# In[ ]:

eda.plot()


# ** Step 2: Information Extraction **
# 
# The information we want to extract from the EDA signal is the phasic component associated to the sympathetic activity.

# In[ ]:

# estimate the driver function
driver = ph.DriverEstim(delta=0.02)(eda)


# In[ ]:

# compute the phasic component
phasic, tonic, _ = ph.PhasicEstim(delta=0.02)(driver)
phasic.plot()


# In[ ]:

# check results so far
ax1 = plt.subplot(211)
eda.plot()

plt.subplot(212, sharex = ax1)
driver.plot()
phasic.plot()
plt.grid()
plt.show()


# ** Step 3: Physiological Indicators **

# In[ ]:

# define a list of indicators we want to compute
indicators = [ph.Mean(), ph.StDev(), ph.AUC(), 
              ph.PeaksMean(delta=0.02),
              ph.DurationMean(delta=0.02)
             ]


# In[ ]:

# define the windowing method


Signal slicing

For now only the values are sliced, the slicing should trigger the slicing of indices, times etc.

fmap: errors and syntax

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-31-f8c2fba97632> in <module>()
      1 # compute indicators over the segments
----> 2 result = ph.fmap(fixed_length, indicators, ibi)

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/__init__.pyc in fmap(segments, algorithms, alt_signal)
    136     from numpy import asarray as _asarray
    137     values = _asarray([[seg.get_begin_time(), seg.get_end_time()] + [alg(seg(alt_signal)) for alg in algorithms]
--> 138                        for seg in segments])
    139     labels = _asarray([seg.get_label() for seg in segments])
    140     col_names = ["begin", "end"] + map(lambda x: x.__repr__(), algorithms)

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/BaseSegmentation.pyc in __call__(self, data)
     48         if data is None:
     49             data = self._signal
---> 50         return data.segment_time(self.get_begin_time(), self.get_end_time())
     51 
     52     def __repr__(self):

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/Signal.pyc in segment_time(self, t_start, t_stop)
    425 
    426         return self.segment_idx(self.get_idx(t_start) if t_start is not None else None,
--> 427                                 self.get_idx(t_stop) if t_stop is not None else None)
    428 
    429     def segment_idx(self, idx_start, idx_stop=None):

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/Signal.pyc in segment_idx(self, idx_start, idx_stop)
    448             idx_start = 0
    449 
--> 450         iidx_start = int(self.get_iidx_from_idx(idx_start))
    451         iidx_stop = int(self.get_iidx_from_idx(idx_stop))
    452 

TypeError: int() argument must be a string or a number, not 'NoneType'



---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-33-f8c2fba97632> in <module>()
      1 # compute indicators over the segments
----> 2 result = ph.fmap(fixed_length, indicators, ibi)

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/__init__.pyc in fmap(segments, algorithms, alt_signal)
    136     from numpy import asarray as _asarray
    137     values = _asarray([[seg.get_begin_time(), seg.get_end_time()] + [alg(seg(alt_signal)) for alg in algorithms]
--> 138                        for seg in segments])
    139     labels = _asarray([seg.get_label() for seg in segments])
    140     col_names = ["begin", "end"] + map(lambda x: x.__repr__(), algorithms)

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/BaseSegmentation.pyc in __iter__(self)
     87 
     88     def __iter__(self):
---> 89         return SegmentationIterator(self)
     90 
     91     @classmethod

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/BaseSegmentation.pyc in __init__(self, win)
    118         assert isinstance(win, SegmentsGenerator)
    119         self._win = _cpy(win)
--> 120         self._win.init_segmentation()
    121 
    122     def next(self):

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/segmentation/SegmentsGenerators.pyc in init_segmentation(self)
    133         self._labsig = self._params["labels"]
    134         s = self._params["start"]
--> 135         self._t = s if s is not None else self._signal.get_start_time()
    136 
    137     def next_times(self):

AttributeError: 'NoneType' object has no attribute 'get_start_time'

wrong representation of instants in an UnevenlySignal

import numpy as np
import pyphysio as ph

FSAMP = 100
n = np.arange(1000)
t = n / FSAMP
freq = 1
#create reference signal
sinusoid = ph.EvenlySignal(np.sin(2 * np.pi * freq * t), sampling_freq = FSAMP, signal_nature = '', start_time = 0)

# remove some samples
sinusoid_unevenly = ph.UnevenlySignal(np.delete(sinusoid.get_values(), [10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]),
                                      sampling_freq = FSAMP, signal_nature = '', start_time = 0,
                                      x_values = np.delete(sinusoid.get_times(), [10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]),
                                      x_type='instants')

np.sum(sinusoid_unevenly.get_times() - np.delete(sinusoid.get_times(), [10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])) # NOT EQUAL TO ZERO

Ease pyphysio imports

Now we should write:
import pyphysio.filters.FIlters as flt

why not just:
import pyphysio.Filters as flt

wrong instants after segment_time() of UnevenlySignal

# create a signal

## create fake data
signal_values = np.arange(100)

## create fake indices
idx = np.arange(100)
idx[-1] = 125

## set the sampling frequency
fsamp = 10 # Hz

## set the starting time
tstart = 0 # s

## create an Unevenly signal defining the indices
x_values_idx = idx

s_fake_idx = UnevenlySignal(values = signal_values, sampling_freq = fsamp, signal_nature = 'fake', start_time = tstart,
                       x_values = x_values_idx, x_type = 'indices')

## create an Unevenly signal defining the indices
x_values_time = idx/fsamp + 1

s_fake_time = UnevenlySignal(values = signal_values, sampling_freq = fsamp, signal_nature = 'fake',# start_time = tstart,
                       x_values = x_values_time, x_type = 'instants')

# segmentation of US

s_fake_idx_segment = s_fake_idx.segment_time(4.5, 5)
s_fake_time_segment = s_fake_time.segment_time(4.5, 5)

# plot
ax1 = plt.subplot(211)
s_fake_idx.plot('.-')
s_fake_idx_segment.plot('.-r')

plt.subplot(212, sharex=ax1)
s_fake_time.plot('.-')
s_fake_time_segment.plot('.-r')

to_evenly() assigns wrong instants

signal_unevenly = ph.UnevenlySignal(np.array([1,2,3,4,5,6,8,9,10]),
                                      sampling_freq = 100, signal_nature = '', start_time = 0,
                                      x_values = np.array([1,2,3,4,5,6,7,9,10]),
                                      x_type='instants')
signal_unevenly.get_times()[0] # = 1 <=OK

signal_evenly = signal_unevenly.to_evenly()
signal_evenly.get_times()[0] # = 0 <= KO

Load sample data for tests

Example:

class Asset(object):
    asset = "sample_data/"
    data = load('medical.txt')
    def ecg():
        return(data[:,0])

    def eda():
        return (etc etc)

BUG segment_time() of UnevenlySignal

# create a signal

## create fake data
signal_values = np.arange(100)

## create fake indices
idx = np.arange(100)
idx[-1] = 125

## set the sampling frequency
fsamp = 10 # Hz

## set the starting time
tstart = 10 # s

## create an Unevenly signal defining the indices
x_values_idx = idx

s_fake_idx = UnevenlySignal(values = signal_values, sampling_freq = fsamp, signal_nature = 'fake', start_time = tstart,
                       x_values = x_values_idx, x_type = 'indices')

s_fake_idx_segment = s_fake_idx.segment_time(4.5, 5)

Traceback:

TypeError                                 Traceback (most recent call last)
<ipython-input-16-04604a1c5589> in <module>()
      1 # segmentation of US
      2 
----> 3 s_fake_idx_segment = s_fake_idx.segment_time(4.5, 5)
      4 s_fake_time_segment = s_fake_time.segment_time(4.5, 5)

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/Signal.pyc in segment_time(self, t_start, t_stop)
    422 
    423         return self.segment_idx(self.get_idx(t_start) if t_start is not None else None,
--> 424                                 self.get_idx(t_stop) if t_stop is not None else None)
    425 
    426     def segment_idx(self, idx_start, idx_stop=None):

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/Signal.pyc in segment_idx(self, idx_start, idx_stop)
    445             idx_start = 0
    446 
--> 447         iidx_start = int(self.get_iidx_from_idx(idx_start))
    448         iidx_stop = int(self.get_iidx_from_idx(idx_stop))
    449 

TypeError: int() argument must be a string or a number, not 'NoneType'

ph.LabelSegments() different behaviour Evenly/Unevenly

Unexpected behaviour when using LabelSegments.
See code below:

from __future__ import division
import numpy as np
import pandas as pd
import os

import pyphysio as ph
import matplotlib.pyplot as plt

#%%
ecg = ph.EvenlySignal(ph.TestData.ecg(), 2048)

ibi = ph.BeatFromECG()(ecg)

labels = np.zeros(len(ecg))

labels[61440:122880] = 1
labels[184320:] = 2

labels = ph.EvenlySignal(labels, 2048)

#%%
windows = ph.LabelSegments(labels=labels)

indicators_td, col_names_td = ph.fmap(windows, ph.preset_hrv_td(prefix=''), ibi)
indicators_fd, col_names_fd = ph.fmap(windows, ph.preset_hrv_fd(prefix=''), ibi.to_evenly().resample(4))

print(indicators_td[:,2])
print(indicators_fd[:,2])

spectrum module

The "spectrum" module imported in pyHRV is missing. It is not being used anyway, perhaps you can remove it (pyHRV.py line "import spectrum as spct").

CustomSegments does not return the label

from __future__ import division
import numpy as np
import pyphysio as ph

ecg = ph.EvenlySignal(values = ph.TestData.ecg(), sampling_freq = 2048, signal_nature = 'ecg')
ibi = ph.BeatFromECG()(ecg)

# create fake label
label = np.zeros(1200)
label[300:600] = 1
label[900:1200] = 2
label = ph.EvenlySignal(label, sampling_freq = 10, signal_nature = 'label')

t_start = [0.5, 15, 88.7]
t_stop = [5, 21, 110.4]
custom_segments = ph.CustomSegments(begins = t_start, ends = t_stop)

indicators, col_names = ph.fmap(custom_segments, [[ph.Mean()], ibi)
print(indicators[:,2])


error when running tests: ModuleNotFoundError: No module named 'context'

$> make test
pytest
=========================================================================== test session starts ============================================================================
platform linux -- Python 3.6.0, pytest-3.0.5, py-1.4.32, pluggy-0.4.0
rootdir: /home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV, inifile: 
collected 0 items / 10 errors 

================================================================================== ERRORS ==================================================================================
__________________________________________________________________ ERROR collecting tests/test_filters.py __________________________________________________________________
ImportError while importing test module '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/tests/test_filters.py'.
Hint: make sure your test modules/packages have valid Python names.                                                                                                         
Traceback:                                                                                                                                                                  
tests/test_filters.py:5: in <module>                                                                                                                                        
    from context import ph, Assets, np                                                                                                                                      
E   ModuleNotFoundError: No module named 'context'                                                                                                                          
__________________________________________________________________ ERROR collecting tests/test_general.py __________________________________________________________________
ImportError while importing test module '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/tests/test_general.py'.
Hint: make sure your test modules/packages have valid Python names.                                                                                                         
Traceback:                                                                                                                                                                  
tests/test_general.py:4: in <module>                                                                                                                                        
    from context import ph, Assets                                                                                                                                          
E   ModuleNotFoundError: No module named 'context'                                                                                                                          
______________________________________________________________ ERROR collecting tests/test_ibi_extraction.py _______________________________________________________________
ImportError while importing test module '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/tests/test_ibi_extraction.py'.
Hint: make sure your test modules/packages have valid Python names.                                                                                                         
Traceback:                                                                                                                                                                  
tests/test_ibi_extraction.py:3: in <module>                                                                                                                                 
    from context import *                                                                                                                                                   
E   ModuleNotFoundError: No module named 'context'                                                                                                                          
______________________________________________________________ ERROR collecting tests/test_indicators_eda.py _______________________________________________________________
ImportError while importing test module '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/tests/test_indicators_eda.py'.
Hint: make sure your test modules/packages have valid Python names.                                                                                                         
Traceback:                                                                                                                                                                  
tests/test_indicators_eda.py:4: in <module>                                                                                                                                 
    from context import ph, Assets, np, approx                                                                                                                              
E   ModuleNotFoundError: No module named 'context'                                                                                                                          
______________________________________________________________ ERROR collecting tests/test_indicators_hrv.py _______________________________________________________________
ImportError while importing test module '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/tests/test_indicators_hrv.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_indicators_hrv.py:3: in <module>
    from context import ph, np, Assets, approx
E   ModuleNotFoundError: No module named 'context'
__________________________________________________________________ ERROR collecting tests/test_issues.py ___________________________________________________________________
ImportError while importing test module '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/tests/test_issues.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_issues.py:4: in <module>
    from context import ph
E   ModuleNotFoundError: No module named 'context'
_____________________________________________________________ ERROR collecting tests/test_phasic_estimation.py _____________________________________________________________
ImportError while importing test module '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/tests/test_phasic_estimation.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_phasic_estimation.py:3: in <module>
    from context import ph, np, Assets, approx
E   ModuleNotFoundError: No module named 'context'
______________________________________________________________ ERROR collecting tests/test_some_indicators.py ______________________________________________________________
ImportError while importing test module '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/tests/test_some_indicators.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_some_indicators.py:4: in <module>
    from context import ph
E   ModuleNotFoundError: No module named 'context'
__________________________________________________________________ ERROR collecting tests/test_syntax.py ___________________________________________________________________
ImportError while importing test module '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/tests/test_syntax.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_syntax.py:3: in <module>
    from context import ph
E   ModuleNotFoundError: No module named 'context'
___________________________________________________________________ ERROR collecting tests/test_tools.py ___________________________________________________________________
ImportError while importing test module '/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/tests/test_tools.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_tools.py:4: in <module>
    from context import ph, np, Assets, approx
E   ModuleNotFoundError: No module named 'context'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 10 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
========================================================================= 10 error in 0.30 seconds =========================================================================
make: *** [Makefile:5: test] Error 2

Allow access to Assets.ecg()

We need to access sample data for the tutorial (not only for tests)
Example:

from pyphysio import Assets 
ecg_data = Assets.ecg()

TODOs Andrea

Added todos in test_indicators_hrv.py (search for TODO Andrea)

Bug in the definition of instants in UnevenlySignal

# create a signal

## create fake data
x = np.arange(100)
idx = np.arange(100)
idx[-1] = 125

## set the sampling frequency
fsamp = 100 # Hz

## set the starting time
tstart = 100 # s

## create the Evenly signal
s_fake = UnevenlySignal(values = x, sampling_freq = fsamp, signal_nature = 'fake', start_time = tstart, x_values = idx, x_type = 'indices')

Should create Unevenly signal starting from 100
Returns:

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-42-30498dfacc96> in <module>()
     14 ## create the Evenly signal
     15 s_fake = UnevenlySignal(values = x, sampling_freq = fsamp, signal_nature = 'fake', start_time = tstart,
---> 16                        x_values = idx, x_type = 'indices')

/home/andrea/Trento/CODICE/workspaces/pyHRV/pyHRV/pyphysio/Signal.pyc in __new__(cls, values, sampling_freq, signal_nature, start_time, x_values, x_type)
    301                 start_time = 0
    302             else:
--> 303                 assert start_time < x_values[1] / sampling_freq, "More than one sample at or before start_time"
    304         else:
    305             if start_time is None:

AssertionError: More than one sample at or before start_time

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.