Code Monkey home page Code Monkey logo

trafficalmr's Introduction

SaferActive: prioritising investment in traffic calming measures for vulnerable road users

Institute for Transport Studies, University of Leeds

1 Background

Active transport can tackle some of the most pressing issues of the 21st century, including air pollution, the obesity epidemic, and transport-related social exclusion (Lucas 2004; Johansson et al. 2017; Saunders et al. 2013). Recognising these wide ranging benefits, the government has ambitious targets for active transport, as outlined in the Cycling and Walking Investment Strategy (CWIS): to double the number of stages cycled compared with the baseline year of 2013, and “reverse the decline in walking” (Department for Transport 2017). Notably, the government aims to double cycling whilst simultaneously reducing the number of people killed or seriously injured per billion km cycled year-on-year.

Data on cycling rates and future investment plans suggest that the cycling uptake target will be difficult to achieve (Road Safety GB 2019). Much research funded in support of the CWIS, such as the Propensity to Cycle Tool (Lovelace et al. 2017), has focussed on boosting walking and cycling levels, with relatively little attention paid to safety, despite the fact that cycling and walking casualties have not fallen since the CWIS baseline year of 2013 (see Figure 1). Safety is a major barrier to greater uptake of cycling and walking (Horton 2016; Jacobsen, Racioppi, and Rutter 2009), with fear of collisions and “too much traffic” being the top two reasons cited in DfT research (Nathan 2019).

The research outlined in the previous paragraph suggests that road safety measures can be an effective way of meeting both the active travel uptake and the road safety targets in the CWIS. This raises the question: which road safety measures work best to protect pedestrians and cyclists? Recent research has found that a range of traffic calming measures can reduce casualty rates, including ‘20 mph limits’ (implemented only via signalling) and ‘20 mph zones’ (which can include optional measures including speed cameras) (Maher 2018; ROSPA 2019), ‘filtered permeability’ interventions including and rising and fixed bollards, and a range of speed humps. A range of additional traffic calming measures is described in the DfT’s Local Transport Note (LTN) 01/07 (Department for Transport 2007). The focus of this study will be on three types of intervention, because these have received attention from the perspective of active travel (Mulvaney et al. 2015), and because data on their spatial (and in some cases date of implementation) is relatively abundant:

  • 20 mph zones, which are well documented in a recent study by Maher (2018), and local case studies published for Bristol (Bornioli et al. 2018) and Greater London (Sarkar, Webster, and Kumari 2018).

    Data on the spatial extent, attributes and time of

    implementation of 20 mph zones will be collated from a range of sources, including via .gov.uk websites, newspaper articles and OpenStreetMap, building on research estimating the accuracy of crowd-sourced road data (Barrington-Leigh and Millard-Ball 2017).

  • Physical traffic calming measures, including the location of speed cameras and speed hump data from local authorities OpenStreetMap.

  • Filtered permeability, which will be measured on a sliding scale reporting connectivity for pedestrians and cyclists, relative to motorised modes.

Reproducible code that accesses, cleans and stores intervention data will be published in an R package, with the working title of trafficcalmr. This will lead to a step change in knowledge on how to access and process historic road calming intervention data, filling an important gap in current knowledge, and providing a robust evidence base on which future interventions can be prioritised and monitored.

Active transport casualties have flatlined. Monthly casualty rates by mode and severity (top) and distance travelled by active modes across Great Britain, start of 2013 to end of 2019 (crash data) and start of 2013 to end of 2017 (travel data). Credit: ITS Leeds, using the stats19 R package, ONS population estimates, and the National Travel Survey summary statistics (NTS0303).

Exposure estimates of pedestrians and cyclists to road danger has long been seen as a difficult component of road safety research. A report funded by the AA Foundation for Road Safety Research stated that “hard facts are lacking about the amount and pattern of activity which takes place each day in the road environment by pedestrians according to their age, gender and social background” (Ward et al. 1994). This is still largely true today, but data availability and processing capabilities have improved greatly, allowing estimates of walking and cycling levels for specific trip purposes to be estimated down to the route segment level. We will build on our previous research estimating exposure at area levels for road safety research (Lovelace, Roberts, and Kellar 2016) and extend it down to the road segment level using methods developed for the Propensity to Cycle Tool, but using higher resolution data, walking routing algorithms to estimate overall active transport levels, to create ‘heatmap’ estimates of exposure.

2 Knowledge of the relevant regulations and guidance

SaferActive will be a digital technology project using open data, with no direct impact on physical infrastructure, so to some extent road traffic calming regulations do not apply. We have good knowledge of guidance and the relevant regulations regarding road and street design and will use this to inform the scenarios of change represented in the application. Furthermore, users of the SaferActive web application should be aware of the relevant guidance. We will direct users towards guidance on integrated planning for urban transport contained in the Design Manual for Urban Roads (Lahart et al. 2013) and the recent book by John Parkin on designing for cycle traffic (Parkin 2018) to ensure interventions are done as part of joined-up transport plans. On specific road traffic measures, we will direct people towards the Local Transport Note 01/07 (Department for Transport 2007), the Design Manual for Roads and Bridges (DMRB) and guidance on 20 mph zones in the House of Commons Briefing paper CBP00468.

3 Ethical and Privacy Issues

The project fully complies with ethical standards at the University of Leeds. The project will exclusively use open data, meaning that GDPR will not apply. There will be no personal data and the STATS19 data is already anonymised.

We are aware of the sensitive nature of some road safety datasets. The main datasets used by the project will be geographic aggregates. If for unforseen reasons we needed to work with sensitive data on the project, we would solicit advice from the Data Owner, the Data Protection Officer in University of Leeds’ Faculty of Environment and the funder before proceeding.

4 Project Structure and Timetable

The structure of the project over its 18 month duration is shown in Figure 2. There are 3 main stages: (1) data access, cleaning and processing; (2) analysis and modelling; and (3) deployment of results. Key milestones will be the completion of the data processing stage (month 9),

release of a publicly available web application (month 12), and the workshops scheduled for months 10 and 17.

Project timeline.

As a digital technology project delivered by an experienced team, the risks involved in funding this proposal are relatively small. Three main risks, and mitigating actions, are outlined in the table below.

Risk Mitigating action
Recruiting issues Promotion to ensure role is well known in the data science research community.
Data access Availability of key datasets have been checked.
Model approach If the TensorFlow library does not work we will shift technology e.g. to xgboost.

5 Experience of the Project Team

Dr Robin Lovelace is an Academic Fellow in Transport and Big Data at ITS. He has expertise in data science, with a focus on transport and geographic data, and is author of widely used books on the subject, including Efficient R Programming and Geocomputation with R. He has demonstrable experience delivering high impact work, notably as Lead Developer of the Propensity to Cycle Tool (PCT), which is being used to design strategic cycle networks in local authorities across England and Wales

(Lovelace et al. 2017).

Dr Samantha Jamson is Professor of Transport Psychology specialising in aspects of workload and distraction with a focus on how processing of information from the road environment affects road safety. She has expertise in the design and evaluation of innovative road safety measures, ranging from low cost engineering interventions to in-vehicle workload managers. She also has experience in the human factors of interface design and the guidelines which should be used to ensure information presentation is clear and appropriate to the task in hand. This project will use her specialist road safety knowledge at the interface between engineering and psychology.

Dr Roger Beecham is an expert in Geographic Data Science and Visualization. With a PhD from the world-leading centre for Information Visualisation giCentre, he has published award-winning papers in geo-spatial data visualization at the prestigious IEEE VIS conference. Roger’s current research focusses on the application of modern data science for both data analysis and communication. Roger will work closely with Layik and Robin in contributing to the project’s methodology, proposing visualization interface designs and exploring and evaluating new approaches for uncertainty representation.

Dr Layik Hama is a technology expert passionate about road safety worldwide. After completing his PhD in Computer Science he led the development of two startup projects, one of which was replicating (www.freebase.com) which was acquired by Google and is now Google Knowledge Graph. Layik has been based at Leeds Institute for Data Analytics (LIDA) since May 2018, working with Robin on open data and research to support sustainable transport and Roger on a visualization framework funded by the Turing Institute. He will be the technical lead, using cutting edge technology to deploy the results in a scalable web application.

A recent conference paper by three of the team members shows we have a track record of collaboration on data science for road safety research.[1] We have also collaborated on writing a peer-reviewed R package called stats19 for increasing public access to reproducible road safety research (Lovelace et al. 2019).

6 Innovation

SaferActive will innovate in a number of areas, pushing the boundaries of applied data driven road safety research, and advancing the knowledge-base needed to effectively prioritise road safety schemes for pedestrians and cyclists. A highly innovative aspect of the project will be its use of four datasets (on exposure, casualties, roads, and historic interventions) that have never previously been combined at the national level. This will add a huge amount of value to existing open datasets and provide a unique opportunity to learn from previously tried interventions.

The machine learning methods will allow not only better insight into the impacts of past interventions on vulnerable road users, but also projections of how effective future interventions could be. After testing the performance of training datasets against independent test data, we will provide the results nationwide. This will lead to innovation indirectly: by providing vital evidence on the likely impacts of different schemes, local authorities and other stakeholders will be able to taylor interventions to maximise both road safety and active transport impacts of new schemes. The quantification of ‘filtered permeability’ will be another innovative aspect of the project.

The most innovative aspect, however, will be the publication of the outputs in an interactive web application, ensuring wide uptake and maximum impact. We believe these innovations can lead to a step change in the policy, practice and public debate of road safety for vulnerable road users.

Prototype web application developed for this bid. See stats19.geoplumber.com for interactive version.

7 References

Barrington-Leigh, Christopher, and Adam Millard-Ball. 2017. “The World’s User-Generated Road Map Is More Than 80% Complete.” PLOS ONE 12 (8): e0180698. https://doi.org/10.1371/journal.pone.0180698.

Bornioli, Anna, Isabelle Bray, Paul Pilkington, and Emma L. Bird. 2018. “The Effectiveness of a 20 Mph Speed Limit Intervention on Vehicle Speeds in Bristol, UK: A Non-Randomised Stepped Wedge Design.” Journal of Transport & Health 11: 47–55. https://doi.org/10.1016/j.jth.2018.09.009.

Department for Transport. 2007. Traffic Calming. Local Transport Note 1/07. London: TSO.

———. 2017. “Cycling and Walking Investment Strategy.” London: Department for Transport.

Horton, Dave. 2016. “Fear of Cycling.” In Cycling and Society, 149–68. Routledge.

Jacobsen, Peter L., Francesca Racioppi, and Harry Rutter. 2009. “Who Owns the Roads? How Motorised Traffic Discourages Walking and Bicycling.” Injury Prevention 15 (6): 369–73. https://doi.org/10.1136/ip.2009.022566.

Johansson, Christer, Boel Lövenheim, Peter Schantz, Lina Wahlgren, Peter Almström, Anders Markstedt, Magnus Strömgren, Bertil Forsberg, and Johan Nilsson Sommar. 2017. “Impacts on Air Pollution and Health by Changing Commuting from Car to Bicycle.” Science of The Total Environment 584-585 (April): 55–63. https://doi.org/10.1016/j.scitotenv.2017.01.145.

Lahart, J., E. Conroy, R. Curley, P. Hogan, S. McGrath, D. Molony, J. Stapleton, D. Taylor, and J. Taylor. 2013. “Design Manual for Urban Roads and Streets.” Technical Paper, Department of Transport, Tourism and Sport of Ireland, Dublin, Ireland.

Lovelace, Robin, Anna Goodman, Rachel Aldred, Nikolai Berkoff, Ali Abbas, and James Woodcock. 2017. “The Propensity to Cycle Tool: An Open Source Online System for Sustainable Transport Planning.” Journal of Transport and Land Use 10 (1). https://doi.org/10.5198/jtlu.2016.862.

Lovelace, Robin, Malcolm Morgan, Layik Hama, and Mark Padgham. 2019. “Stats19: A Package for Working with Open Road Crash Data.” Journal of Open Source Software. https://doi.org/10.21105/joss.01181.

Lovelace, Robin, Hannah Roberts, and Ian Kellar. 2016. “Who, Where, When: The Demographic and Geographic Distribution of Bicycle Crashes in West Yorkshire.” Transportation Research Part F: Traffic Psychology and Behaviour, Bicycling and bicycle safety, 41, Part B. https://doi.org/10.1016/j.trf.2015.02.010.

Lucas, Karen, ed. 2004. Running on Empty: Transport, Social Exclusion and Environmental Justice. Bristol, UK: Policy.

Maher, Mike. 2018. “20mph Research Study.” Department for Transport.

Mulvaney, Caroline A., Sherie Smith, Michael C. Watson, John Parkin, Carol Coupland, Philip Miller, Denise Kendrick, and Hugh McClintock. 2015. “Cycling Infrastructure for Reducing Cycling Injuries in Cyclists.” Cochrane Database of Systematic Reviews, no. 12. https://doi.org/10.1002/14651858.CD010415.pub2.

Nathan, Jai. 2019. “The Cycling and Walking Investment Strategy (CWIS) Safety Review.” Department for Transport.

Parkin, John. 2018. Designing for Cycle Traffic: International Principles and Practice. ICE Publishing.

Road Safety GB. 2019. “Government Urged to Increase Funding for Walking and Cycling.”

ROSPA. 2019. “A Guide to 20mph Limits.” The Royal Society for the Prevention of Accidents.

Sarkar, Chinmoy, Chris Webster, and Sarika Kumari. 2018. “Street Morphology and Severity of Road Casualties: A 5-Year Study of Greater London.” International Journal of Sustainable Transportation 12 (7): 510–25. https://doi.org/10.1080/15568318.2017.1402972.

Saunders, Lucinda E, Judith M Green, Mark P Petticrew, Rebecca Steinbach, and Helen Roberts. 2013. “What Are the Health Benefits of Active Travel? A Systematic Review of Trials and Cohort Studies.” Edited by Jonatan R. Ruiz. PloS One 8 (8): e69912. https://doi.org/10.1371/journal.pone.0069912.

Ward, Heather, Carin Kuiper, Luis Willumsen, and Steer Davies Gleave. 1994. Pedestrian Activity and Accident Risk. AA Foundation for Road Safety Research.

[1] See https://github.com/Robinlovelace/stats19-gisruk.

trafficalmr's People

Contributors

joeytalbot avatar layik avatar mem48 avatar publichealthdatageek avatar robinlovelace avatar rogerbeecham avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

agila5

trafficalmr's Issues

tc_upset bug

Casualties or vehicles are not being properly assigned to the 'Other' category.

The figure in the function help example has lots of accidents with lone pedestrians or with lone cyclists. This isn't correct. Instead these crashes should probably be 'pedestrian + other' and 'cyclist + other.'

remotes::install_github("saferactive/trafficalmr")
library(trafficalmr)
remotes::install_github("krassowski/complex-upset")

crash_summary = tc_join_stats19(crashes_wf, casualties_wf, vehicles_wf)


# create plot with 'Other' category
casualties_wf2 = dplyr::mutate(
  casualties_wf,
  casualty_type_simple = dplyr::case_when(
    casualty_type == "Car occupant" ~ "Car",
    casualty_type == "Pedestrian" ~ "Pedestrian",
    casualty_type == "Cyclist" ~ "Cyclist",
    TRUE ~ "Other"
  )
)
crash_summary = tc_join_stats19(crashes_wf, casualties_wf2, vehicles_wf)
tc_upset(crash_summary, casualty_type = c("Car", "Pedestrian", "Bicycle", "Other"))

Function to recode maxspeed values from OSM

Currently maxspeed variables are all over the place. @mem48 we could integrate stuff you did on CyIPT here and make it well documented and future proof. Here's what I get for London:

summary(osm_london_highways_gf_common$maxspeed)
      10   10 mph      100  100 mph  105 mph  110 mph  115 mph   12 mph  125 mph       15   15 mph      180    2 mph       20 
       0        3        0        0        0        0        0        0        0        0        0        0        0        1 
  20 mph      225      230   25 mph      250       30   30 mph      300      320   35 mph    4 mph       40   40 mph   45 mph 
    9560        0        0        0        0       20    11220        0        0        0        0        1      924        0 
       5    5 mph       50   50 mph   55 mph       60   60 mph       64   65 mph        7   70 mph   75 mph       80   80 mph 
       0        2        0      236        0        0       62        0        0        0        2        0        0        0 
  85 mph   90 mph   95 mph national     none  signals variable     walk     NA's 
       0        0        0        1        0        6        0        0     5576 

segment argument in osm_consolidate does not work as expected

The docs say:

#' @param segment numeric, max length of segments in metres

This implies that longer segments will results in fewer output objects.
However, the opposite is true, as shown below on the osm_cleaning branch:

> nrow(x) / nrow(osm_consolidated)
[1] 1.258448
> osm_consolidated_1000m = osm_consolidate(x, segment = 1000)
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Warning message:
In st_cast.sf(xmlsB, "LINESTRING") :
  repeating attributes for all sub-geometries for which they may not be constant
> nrow(x) / nrow(osm_consolidated_1000m)
[1] 1.408046
> osm_consolidated_200m = osm_consolidate(x, segment = 200)
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  
Warning message:
In st_cast.sf(xmlsB, "LINESTRING") :
  repeating attributes for all sub-geometries for which they may not be constant
> nrow(x) / nrow(osm_consolidated_200m)
[1] 0.8423815

Was this intended @mem48 ? seems like a bug to me.

Error with osm_consolidate

Heads-up @mem48 there is an error when I run this function:

(Heads-up also @joeytalbot sorry for being slow on this!)

region_name = "Isle of Wight"
> # region_name = "Greater London" # test for London
> osm = osmextract::oe_get(region_name)
> osm = osm_main_roads(osm)
> osm = sf::st_transform(osm, 27700)
> osm = osm_consolidate(osm)
 Error in `[.data.frame`(x, i, j, drop = drop) : 
  undefined columns selected 

Time to check package...

On local desktop it takes almost a minute to run, although it's 40% faster on a remote server it's still on the slow side:

  • Local: 45.943 s
  • Remote: 33.84 s
system.time(devtools::check("~/saferactive/trafficalmr/"))
#> Updating trafficalmr documentation
#> Loading trafficalmr
#> Writing NAMESPACE
#> Writing NAMESPACE
#> ── Building ──────────────────────────────────────────────────────────────── trafficalmr ──
#> Setting env vars:
#> ● CFLAGS    : -Wall -pedantic
#> ● CXXFLAGS  : -Wall -pedantic
#> ● CXX11FLAGS: -Wall -pedantic
#> ───────────────────────────────────────────────────────────────────────────────────────────
#>      checking for file ‘/mnt/57982e2a-2874-4246-a6fe-115c199bc6bd/orgs/saferactive/trafficalmr/DESCRIPTION’ ...  ✔  checking for file ‘/mnt/57982e2a-2874-4246-a6fe-115c199bc6bd/orgs/saferactive/trafficalmr/DESCRIPTION’
#>   ─  preparing ‘trafficalmr’: (3.4s)
#>      checking DESCRIPTION meta-information ...  ✔  checking DESCRIPTION meta-information
#>   ─  installing the package to build vignettes
#>      creating vignettes ...  ✔  creating vignettes (12.2s)
#>   ─  checking for LF line-endings in source and make files and shell scripts
#>   ─  checking for empty or unneeded directories
#>   ─  building ‘trafficalmr_0.1.0.tar.gz’
#>      
#> ── Checking ──────────────────────────────────────────────────────────────── trafficalmr ──
#> Setting env vars:
#> ● _R_CHECK_CRAN_INCOMING_USE_ASPELL_: TRUE
#> ● _R_CHECK_CRAN_INCOMING_REMOTE_    : FALSE
#> ● _R_CHECK_CRAN_INCOMING_           : FALSE
#> ● _R_CHECK_FORCE_SUGGESTS_          : FALSE
#> ● NOT_CRAN                          : true
#> ── R CMD check ─────────────────────────────────────────────────────────────────
#> * using log directory ‘/tmp/RtmpXDmJzP/trafficalmr.Rcheck’
#> * using R version 4.0.2 (2020-06-22)
#> * using platform: x86_64-pc-linux-gnu (64-bit)
#> * using session charset: UTF-8
#> * using options ‘--no-manual --as-cran’
#> * checking for file ‘trafficalmr/DESCRIPTION’ ... OK
#> * checking extension type ... Package
#> * this is package ‘trafficalmr’ version ‘0.1.0’
#> * package encoding: UTF-8
#> * checking package namespace information ... OK
#> * checking package dependencies ... OK
#> * checking if this is a source package ... OK
#> * checking if there is a namespace ... OK
#> * checking for executable files ... OK
#> * checking for hidden files and directories ... OK
#> * checking for portable file names ... OK
#> * checking for sufficient/correct file permissions ... OK
#> * checking whether package ‘trafficalmr’ can be installed ... OK
#> * checking installed package size ... NOTE
#>   installed size is  6.2Mb
#>   sub-directories of 1Mb or more:
#>     doc   5.6Mb
#> * checking package directory ... OK
#> * checking for future file timestamps ... NOTE
#> unable to verify current time
#> * checking ‘build’ directory ... OK
#> * checking DESCRIPTION meta-information ... OK
#> * checking top-level files ... OK
#> * checking for left-over files ... OK
#> * checking index information ... OK
#> * checking package subdirectories ... OK
#> * checking R files for non-ASCII characters ... OK
#> * checking R files for syntax errors ... OK
#> * checking whether the package can be loaded ... OK
#> * checking whether the package can be loaded with stated dependencies ... OK
#> * checking whether the package can be unloaded cleanly ... OK
#> * checking whether the namespace can be loaded with stated dependencies ... OK
#> * checking whether the namespace can be unloaded cleanly ... OK
#> * checking loading without being on the library search path ... OK
#> * checking dependencies in R code ... OK
#> * checking S3 generic/method consistency ... OK
#> * checking replacement functions ... OK
#> * checking foreign function calls ... OK
#> * checking R code for possible problems ... OK
#> * checking Rd files ... OK
#> * checking Rd metadata ... OK
#> * checking Rd line widths ... OK
#> * checking Rd cross-references ... OK
#> * checking for missing documentation entries ... OK
#> * checking for code/documentation mismatches ... OK
#> * checking Rd \usage sections ... OK
#> * checking Rd contents ... OK
#> * checking for unstated dependencies in examples ... OK
#> * checking contents of ‘data’ directory ... OK
#> * checking data for non-ASCII characters ... OK
#> * checking data for ASCII and uncompressed saves ... OK
#> * checking installed files from ‘inst/doc’ ... OK
#> * checking files in ‘vignettes’ ... OK
#> * checking examples ... OK
#> * checking for unstated dependencies in ‘tests’ ... OK
#> * checking tests ...
#>   Running ‘skip-download.R’
#>   Running ‘testthat.R’
#>  OK
#> * checking for unstated dependencies in vignettes ... OK
#> * checking package vignettes in ‘inst/doc’ ... OK
#> * checking re-building of vignette outputs ... OK
#> * checking for non-standard things in the check directory ... OK
#> * checking for detritus in the temp directory ... OK
#> * DONE
#> 
#> Status: 2 NOTEs
#> See
#>   ‘/tmp/RtmpXDmJzP/trafficalmr.Rcheck/00check.log’
#> for details.
#>    user  system elapsed 
#>  24.942   4.580  45.943

Created on 2020-09-22 by the reprex package (v0.3.0)

tc_join_stats19 should be more flexible

It should be able to return data at the casualty level. Example below:

remotes::install_github("saferactive/trafficalmr")
#> Using github PAT from envvar GITHUB_PAT
#> Skipping install of 'trafficalmr' from a github remote, the SHA1 (bce0785a) has not changed since last install.
#>   Use `force = TRUE` to force installation
library(trafficalmr)
nrow(crashes_wf)
#> [1] 3449
nrow(casualties_wf)
#> [1] 4245
crash_summary = tc_join_stats19(crashes_wf, casualties_wf, vehicles_wf)
#> Joining, by = "accident_index"
nrow(crash_summary)
#> [1] 3449

Created on 2020-07-17 by the reprex package (v0.3.0)

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.