Coder Social home page Coder Social logo

ndviewer's Introduction

Micro-Manager

Micro-Manager is an application to control microscope hardware, such as cameras, xy-stages, filter wheels, etc. It includes a hardware abstraction layer written in C++ and a user interface written in Java (Swing).

Go to micro-manager.org for documentation and binary downloads.

For support, see Micro-Manager Community.

The Micro-Manager community welcomes you! For our governance structures, go here

Source code

This repository contains the Java projects that make up the Micro-Manager "MMStudio" GUI application. The device control layer is written in C++ and found in a separate repository, mmCoreAndDevices, which is currently a git submodule of this repository.

To checkout both repositories together:

git clone --recurse-submodules https://github.com/micro-manager/micro-manager.git

If you will be making changes to the code, make sure to enable pre-commit hooks as described in doc/pre-commit.md.

Branches

  • main - the main branch of development (Micro-Manager 2.x)
  • svn-mirror - git-svn mirror of the Micro-Manager 1.4 Subversion repository

Other branches are not official.

Developer information

For license information, please see doc/copyright.txt.

For build instructions, please see the doc/how-to-build.md.

Additional information is available on the Micro-Manager website at https://micro-manager.org

Contributing

Start here: https://micro-manager.org/Building_and_debugging_Micro-Manager_source_code

ndviewer's People

Contributors

henrypinkard avatar ieivanov avatar nicost avatar

Watchers

 avatar  avatar

ndviewer's Issues

Opening data through the Micro-Magellan plugin leads to a deadlock on newer JREs

The following was seen while running Micro-Manager under IntelliJ (which I presume to be irrelevant). When using AdoptOpenJDP 1.8.242, the deadlock described below hangs the application. This deadlock does not occurr with jre 1.8.131 or 1.8.152 (which ships with Micro-Manager). I would assume that some change in Swing in between 1.8.152 and 1.8.242 does not play well with NDViewer. This will need to fixed at some point, as Micro-Manager will likely start using a newer jre.

Description: Open a dataset acquired in Micro-Magellan. Select "Open Dataset" and select the dataset. Many progress bars show up and disappear. The Magellan viewer window shows with a black pane on the left, and no histograms on the right. There appears to be a dead lock, as the UI no longer responds (have to kill Micro-Manager).

Following is produced by the EDT monitor in MM:

2020-09-22T20:01:04.276648 tid29668 [IFO,App] EDTHangLogger: Missed heartbeat; waiting to see if we are stuck on a single event
2020-09-22T20:01:05.285201 tid29668 [IFO,App] EDTHangLogger: Event handling has exceeded at least 1006 ms (currently 5508 ms since heartbeat timebase)
[ ] Stack traces follow (note: thread states queried later than stack traces)
[ ] Thread 2 [Reference Handler] WAITING
[ ] at java.lang.Object.wait(Native Method)
[ ] at java.lang.Object.wait(Object.java:502)
[ ] at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
[ ] at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
[ ] Thread 3 [Finalizer] WAITING
[ ] at java.lang.Object.wait(Native Method)
[ ] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
[ ] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
[ ] at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)
[ ] Thread 4 [Signal Dispatcher] RUNNABLE
[ ] Thread 5 [Attach Listener] RUNNABLE
[ ] Thread 15 [RMI TCP Accept-0] RUNNABLE
[ ] at java.net.DualStackPlainSocketImpl.accept0(Native Method)
[ ] at java.net.DualStackPlainSocketImpl.socketAccept(DualStackPlainSocketImpl.java:131)
[ ] at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
[ ] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:199)
[ ] at java.net.ServerSocket.implAccept(ServerSocket.java:560)
[ ] at java.net.ServerSocket.accept(ServerSocket.java:528)
[ ] at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:405)
[ ] at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:377)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 16 [RMI Reaper] WAITING
[ ] at java.lang.Object.wait(Native Method)
[ ] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
[ ] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
[ ] at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:351)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 17 [GC Daemon] TIMED_WAITING
[ ] at java.lang.Object.wait(Native Method)
[ ] at sun.misc.GC$Daemon.run(GC.java:117)
[ ] Thread 18 [Java2D Disposer] WAITING
[ ] at java.lang.Object.wait(Native Method)
[ ] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
[ ] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
[ ] at sun.java2d.Disposer.run(Disposer.java:148)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 19 [AWT-Shutdown] WAITING
[ ] at java.lang.Object.wait(Native Method)
[ ] at java.lang.Object.wait(Object.java:502)
[ ] at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:295)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 20 [AWT-Windows] RUNNABLE
[ ] at sun.awt.windows.WToolkit.eventLoop(Native Method)
[ ] at sun.awt.windows.WToolkit.run(WToolkit.java:316)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 22 [AWT-EventQueue-0] RUNNABLE
[ ] at sun.java2d.pisces.Renderer.lineTo(Renderer.java:382)
[ ] at sun.java2d.pisces.Stroker$PolyStack.pop(Stroker.java:1194)
[ ] at sun.java2d.pisces.Stroker.emitReverse(Stroker.java:415)
[ ] at sun.java2d.pisces.Stroker.finish(Stroker.java:438)
[ ] at sun.java2d.pisces.Stroker.moveTo(Stroker.java:348)
[ ] at sun.java2d.pisces.Dasher.goTo(Dasher.java:155)
[ ] at sun.java2d.pisces.Dasher.lineTo(Dasher.java:210)
[ ] at sun.java2d.pipe.RenderingEngine.feedConsumer(RenderingEngine.java:366)
[ ] at sun.java2d.pisces.PiscesRenderingEngine.pathTo(PiscesRenderingEngine.java:484)
[ ] at sun.java2d.pisces.PiscesRenderingEngine.strokeTo(PiscesRenderingEngine.java:363)
[ ] at sun.java2d.pisces.PiscesRenderingEngine.strokeTo(PiscesRenderingEngine.java:163)
[ ] at sun.java2d.pisces.PiscesRenderingEngine.getAATileGenerator(PiscesRenderingEngine.java:562)
[ ] at sun.java2d.pipe.AAShapePipe.renderPath(AAShapePipe.java:152)
[ ] at sun.java2d.pipe.AAShapePipe.draw(AAShapePipe.java:64)
[ ] at sun.java2d.pipe.PixelToParallelogramConverter.draw(PixelToParallelogramConverter.java:148)
[ ] at sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2497)
[ ] at org.micromanager.ndviewer.internal.gui.contrast.HistogramPanel.drawCursor(HistogramPanel.java:159)
[ ] at org.micromanager.ndviewer.internal.gui.contrast.HistogramPanel.paintComponent(HistogramPanel.java:715)
[ ] at javax.swing.JComponent.paint(JComponent.java:1056)
[ ] at org.micromanager.ndviewer.internal.gui.contrast.ChannelControlPanel$5.paint(ChannelControlPanel.java:277)
[ ] at javax.swing.JComponent.paintChildren(JComponent.java:889)
[ ] at javax.swing.JComponent.paint(JComponent.java:1065)
[ ] at javax.swing.JComponent.paintChildren(JComponent.java:889)
[ ] at javax.swing.JComponent.paint(JComponent.java:1065)
[ ] at javax.swing.JComponent.paintChildren(JComponent.java:889)
[ ] at javax.swing.JComponent.paint(JComponent.java:1065)
[ ] at javax.swing.JComponent.paintChildren(JComponent.java:889)
[ ] at javax.swing.JComponent.paint(JComponent.java:1065)
[ ] at javax.swing.JViewport.paint(JViewport.java:728)
[ ] at javax.swing.JComponent.paintChildren(JComponent.java:889)
[ ] at javax.swing.JComponent.paint(JComponent.java:1065)
[ ] at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
[ ] at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
[ ] at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
[ ] at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
[ ] at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
[ ] at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
[ ] at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
[ ] at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
[ ] at java.security.AccessController.doPrivileged(Native Method)
[ ] at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
[ ] at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
[ ] at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
[ ] at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
[ ] at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
[ ] at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
[ ] at java.awt.event.InvocationEvent.dispatch$$$capture(InvocationEvent.java:311)
[ ] at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java)
[ ] at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
[ ] at java.awt.EventQueue.access$500(EventQueue.java:97)
[ ] at java.awt.EventQueue$3.run(EventQueue.java:709)
[ ] at java.awt.EventQueue$3.run(EventQueue.java:703)
[ ] at java.security.AccessController.doPrivileged(Native Method)
[ ] at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
[ ] at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
[ ] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
[ ] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
[ ] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
[ ] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
[ ] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
[ ] at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
[ ] Thread 25 [DestroyJavaVM] RUNNABLE
[ ] Thread 26 [User Profile Saver Pool Thread 0] WAITING
[ ] at sun.misc.Unsafe.park(Native Method)
[ ] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
[ ] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
[ ] at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1081)
[ ] at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
[ ] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
[ ] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
[ ] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 29 [TimerQueue] TIMED_WAITING
[ ] at sun.misc.Unsafe.park(Native Method)
[ ] at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
[ ] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
[ ] at java.util.concurrent.DelayQueue.take(DelayQueue.java:223)
[ ] at javax.swing.TimerQueue.run(TimerQueue.java:174)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 30 [EDTHangLogger timer] RUNNABLE
[ ] at java.lang.Thread.dumpThreads(Native Method)
[ ] at java.lang.Thread.getAllStackTraces(Thread.java:1610)
[ ] at org.micromanager.internal.diagnostics.EDTHangLogger.checkForHang(EDTHangLogger.java:233)
[ ] at org.micromanager.internal.diagnostics.EDTHangLogger.access$200(EDTHangLogger.java:34)
[ ] at org.micromanager.internal.diagnostics.EDTHangLogger$4.run(EDTHangLogger.java:220)
[ ] at java.util.TimerThread.mainLoop(Timer.java:555)
[ ] at java.util.TimerThread.run(Timer.java:505)
[ ] Thread 31 [Thread-4] TIMED_WAITING
[ ] at java.lang.Object.wait(Native Method)
[ ] at bsh.util.JConsole$BlockingPipedInputStream.read(JConsole.java:771)
[ ] at java.io.PipedInputStream.read(PipedInputStream.java:377)
[ ] at java.io.InputStream.read(InputStream.java:101)
[ ] at bsh.util.JConsole.inPipeWatcher(JConsole.java:667)
[ ] at bsh.util.JConsole.run(JConsole.java:677)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 32 [BeanShell interpreter] TIMED_WAITING
[ ] at java.lang.Object.wait(Native Method)
[ ] at java.io.PipedInputStream.read(PipedInputStream.java:326)
[ ] at java.io.PipedInputStream.read(PipedInputStream.java:377)
[ ] at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
[ ] at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
[ ] at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
[ ] at java.io.InputStreamReader.read(InputStreamReader.java:184)
[ ] at bsh.JavaCharStream.FillBuff(JavaCharStream.java:160)
[ ] at bsh.JavaCharStream.ReadByte(JavaCharStream.java:188)
[ ] at bsh.JavaCharStream.readChar(JavaCharStream.java:289)
[ ] at bsh.JavaCharStream.BeginToken(JavaCharStream.java:209)
[ ] at bsh.ParserTokenManager.getNextToken(ParserTokenManager.java:2072)
[ ] at bsh.Parser.jj_ntk(Parser.java:6022)
[ ] at bsh.Parser.Line(Parser.java:163)
[ ] at bsh.Interpreter.Line(Interpreter.java:1011)
[ ] at bsh.Interpreter.run(Interpreter.java:462)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 36 [Thread-8] RUNNABLE
[ ] at java.net.DualStackPlainSocketImpl.accept0(Native Method)
[ ] at java.net.DualStackPlainSocketImpl.socketAccept(DualStackPlainSocketImpl.java:131)
[ ] at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
[ ] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:199)
[ ] at java.net.ServerSocket.implAccept(ServerSocket.java:560)
[ ] at java.net.ServerSocket.accept(ServerSocket.java:528)
[ ] at bsh.util.Httpd.run(Httpd.java:64)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 38 [Thread-10] RUNNABLE
[ ] at java.net.DualStackPlainSocketImpl.accept0(Native Method)
[ ] at java.net.DualStackPlainSocketImpl.socketAccept(DualStackPlainSocketImpl.java:131)
[ ] at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
[ ] at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:199)
[ ] at java.net.ServerSocket.implAccept(ServerSocket.java:560)
[ ] at java.net.ServerSocket.accept(ServerSocket.java:528)
[ ] at bsh.util.Sessiond.run(Sessiond.java:65)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 39 [ZMQ Server ] RUNNABLE
[ ] at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
[ ] at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
[ ] at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
[ ] at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
[ ] at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
[ ] at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
[ ] at zmq.Signaler.waitEvent(Signaler.java:129)
[ ] at zmq.Mailbox.recv(Mailbox.java:90)
[ ] at zmq.SocketBase.processCommands(SocketBase.java:911)
[ ] at zmq.SocketBase.recv(SocketBase.java:834)
[ ] at org.zeromq.ZMQ$Socket.recv(ZMQ.java:3358)
[ ] at org.zeromq.ZMQ$Socket.recvStr(ZMQ.java:3450)
[ ] at org.zeromq.ZMQ$Socket.recvStr(ZMQ.java:3431)
[ ] at org.micromanager.internal.zmq.ZMQServer.lambda$initialize$1(ZMQServer.java:94)
[ ] at org.micromanager.internal.zmq.ZMQServer$$Lambda$120/693215675.call(Unknown Source)
[ ] at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
[ ] at java.util.concurrent.FutureTask.run(FutureTask.java)
[ ] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[ ] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 40 [reaper-1] RUNNABLE
[ ] at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
[ ] at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
[ ] at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
[ ] at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
[ ] at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
[ ] at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
[ ] at zmq.poll.Poller.run(Poller.java:234)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 41 [iothread-2] RUNNABLE
[ ] at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
[ ] at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
[ ] at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
[ ] at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
[ ] at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
[ ] at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
[ ] at zmq.poll.Poller.run(Poller.java:234)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 44 [Swing-Shell] WAITING
[ ] at sun.misc.Unsafe.park(Native Method)
[ ] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
[ ] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
[ ] at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
[ ] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
[ ] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
[ ] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[ ] at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Win32ShellFolderManager2.java:586)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 70 [Display calculation executor] WAITING
[ ] at sun.misc.Unsafe.park(Native Method)
[ ] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
[ ] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
[ ] at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
[ ] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
[ ] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
[ ] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[ ] at java.lang.Thread.run(Thread.java:748)
[ ] Thread 71 [Overalyer task thread] WAITING
[ ] at sun.misc.Unsafe.park(Native Method)
[ ] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
[ ] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
[ ] at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
[ ] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
[ ] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
[ ] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[ ] at java.lang.Thread.run(Thread.java:748)

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.