Giter Site home page Giter Site logo

biolab / orange3 Goto Github PK

View Code? Open in Web Editor NEW
4.6K 181.0 979.0 98.38 MB

🍊 :bar_chart: :bulb: Orange: Interactive data analysis

Home Page: https://orangedatamining.com

License: Other

Python 98.53% C 0.27% Shell 0.01% C++ 0.03% Jupyter Notebook 0.08% Cython 1.07%
data-mining data-science machine-learning data-visualization orange python scikit-learn numpy scipy pandas

orange3's Introduction

Orange Data Mining

Orange Data Mining

Orange is a data mining and visualization toolbox for novice and expert alike. To explore data with Orange, one requires no programming or in-depth mathematical knowledge. We believe that workflow-based data science tools democratize data science by hiding complex underlying mechanics and exposing intuitive concepts. Anyone who owns data, or is motivated to peek into data, should have the means to do so.

Example Workflow

Installing

Easy installation

For easy installation, Download the latest released Orange version from our website. To install an add-on, head to Options -> Add-ons... in the menu bar.

Installing with Conda

First, install Miniconda for your OS.

Then, create a new conda environment, and install orange3:

# Add conda-forge to your channels for access to the latest release
conda config --add channels conda-forge

# Perhaps enforce strict conda-forge priority
conda config --set channel_priority strict

# Create and activate an environment for Orange
conda create python=3.10 --yes --name orange3
conda activate orange3

# Install Orange
conda install orange3

For installation of an add-on, use:

conda install orange3-<addon name>

See specific add-on repositories for details.

Installing with pip

We recommend using our standalone installer or conda, but Orange is also installable with pip. You will need a C/C++ compiler (on Windows we suggest using Microsoft Visual Studio Build Tools). Orange needs PyQt to run. Install either:

  • PyQt5 and PyQtWebEngine: pip install -r requirements-pyqt.txt
  • PyQt6 and PyQt6-WebEngine: pip install PyQt6 PyQt6-WebEngine

Installing with winget (Windows only)

To install Orange with winget, run:

winget install --id  UniversityofLjubljana.Orange 

Running

Ensure you've activated the correct virtual environment. If following the above conda instructions:

conda activate orange3

Run orange-canvas or python3 -m Orange.canvas. Add --help for a list of program options.

Starting up for the first time may take a while.

Developing

GitHub Actions codecov Contributor count Latest GitHub commit

Want to write a widget? Use the Orange3 example add-on template.

Want to get involved? Join us on Discord, introduce yourself in #general!

Take a look at our contributing guide and style guidelines.

Check out our widget development docs for a comprehensive guide on writing Orange widgets.

The Orange ecosystem

The development of core Orange is primarily split into three repositories:

biolab/orange-canvas-core implements the canvas,
biolab/orange-widget-base is a handy widget GUI library,
biolab/orange3 brings it all together and implements the base data mining toolbox.

Additionally, add-ons implement additional widgets for more specific use cases. Anyone can write an add-on. Some of our first-party add-ons:

Setting up for core Orange development

First, fork the repository by pressing the fork button in the top-right corner of this page.

Set your GitHub username,

export MY_GITHUB_USERNAME=replaceme

create a conda environment, clone your fork, and install it:

conda create python=3.10 --yes --name orange3
conda activate orange3

git clone ssh://[email protected]/$MY_GITHUB_USERNAME/orange3

# Install PyQT and PyQtWebEngine. You can also use PyQt6
pip install -r requirements-pyqt.txt
pip install -e orange3

Now you're ready to work with git. See GitHub's guides on pull requests, forks if you're unfamiliar. If you're having trouble, get in touch on Discord.

Running

Run Orange with python -m Orange.canvas (after activating the conda environment).

python -m Orange.canvas -l 2 --no-splash --no-welcome will skip the splash screen and welcome window, and output more debug info. Use -l 4 for more.

Add --clear-widget-settings to clear the widget settings before start.

To explore the dark side of the Orange, try --style=fusion:breeze-dark

Argument --help lists all available options.

To run tests, use unittest Orange.tests Orange.widgets.tests

Setting up for development of all components

Should you wish to contribute Orange's base components (the widget base and the canvas), you must also clone these two repositories from Github instead of installing them as dependencies of Orange3.

First, fork all the repositories to which you want to contribute.

Set your GitHub username,

export MY_GITHUB_USERNAME=replaceme

create a conda environment, clone your forks, and install them:

conda create python=3.10 --yes --name orange3
conda activate orange3

# Install PyQT and PyQtWebEngine. You can also use PyQt6
pip install -r requirements-pyqt.txt

git clone ssh://[email protected]/$MY_GITHUB_USERNAME/orange-widget-base
pip install -e orange-widget-base

git clone ssh://[email protected]/$MY_GITHUB_USERNAME/orange-canvas-core
pip install -e orange-canvas-core

git clone ssh://[email protected]/$MY_GITHUB_USERNAME/orange3
pip install -e orange3

# Repeat for any add-on repositories

It's crucial to install orange-base-widget and orange-canvas-core before orange3 to ensure that orange3 will use your local versions.

orange3's People

Contributors

acopar avatar ajdapretnar avatar ales-erjavec avatar andrejakovacic avatar astaric avatar aturanjanin avatar blazzupan avatar irgolic avatar jakakokosar avatar janezd avatar jerneju avatar jurreb avatar jzbontar avatar kernc avatar lanzagar avatar larazupan avatar marinkaz avatar markotoplak avatar matevzkren avatar mfrlin avatar mstrazar avatar nikicc avatar noahnovsak avatar pavlin-policar avatar primozgodec avatar robertcv avatar rokgomiscek avatar thocevar avatar tomazc avatar vesnat 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  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

orange3's Issues

Define the hiearchy of filters

The filters should support any kind of data selection (rows or columns), as they will also be used for describing data sets in proxies used for SQL-based data storage.

For the beginning, think about what is needed for widget Select Data

Saving in .csv format

The current function Orange.data.io.csvSaver does not handle meta attributes and doesn't add flags like D# and C# for cases in which automated recognition of variable types would fail.

CloneContexts does not work

TypeError Traceback (most recent call last):
File "/Users/janezdemsar/orange3/Orange/canvas/scheme/widgetsscheme.py", line 546, in process_signals_for_widget
handler(_args)
File "/Users/janezdemsar/orange3/Orange/widgets/visualize/owboxplot.py", line 198, in data
self.openContext(self.ddataset)
File "/Users/janezdemsar/orange3/Orange/widgets/widget.py", line 548, in openContext
self.settingsHandler.open_context(self, *a)
File "/Users/janezdemsar/orange3/Orange/widgets/settings.py", line 262, in open_context
self.find_or_create_context(widget, *arg, *_argkw)
File "/Users/janezdemsar/orange3/Orange/widgets/settings.py", line 391, in find_or_create_context
super().find_or_create_context(widget, *encoded_domain)
File "/Users/janezdemsar/orange3/Orange/widgets/settings.py", line 292, in find_or_create_context
context = self.clone_context(best_context, *arg)
TypeError: clone_context() takes exactly 5 arguments (4 given)

Implement SVM Learner

Use any suitable library (probably sklearn) and assume that the data is stored in numpy.

Implement naive Bayesian learner

For demonstration purposes, let this learner be written so that it does not assume a particular type of storage, e.g., let it use distributions and contingencies computed by the storage.

bincount - unexpected keyword argument 'mask'

Sample code that reproduces this error but works without (//2 + 1).

x = np.random.random_integers(1, 3, (10, 4))
y = np.random.random_integers(1, 5, (10, 1)) // 2 + 1
table_rand = Orange.data.Table(x, y)
dist_rand = distribution.get_distribution(table_rand, table_rand.domain.class_var)

Port orangeqt to orange3

move orangeqt to a separate repository
get rid of cmake
describe how to build it for python3

The following almost works, except that it the module misses the init function

hg clone https://bitbucket.org/biolab/orange
cd orange/source/orangeqt
sudo apt-get install libqt4-dev python-sip-dev cmake
cmake

Installation instructions in README.txt

They need some updating -- it is not as easy as described there.

For instance, scipy doesn't seem pip-installable -- it complains about the missing BLAS libraries, at least on Ubuntu 13. It seems better to install numpy and scipy through apt-get, globally, not within virtual environment.

I suggest keeping them in requirements.txt, but instruct people to install it with apt-get.

This seems to approximately work on a fresh Ubuntu 13:

# This is needed for setting up virtual environments in Python 3
sudo apt-get install python3-setuptools
sudo easy_install pip
sudo pip install virtualenv

    #
sudo apt-get install git # needed for Orange
sudo apt-get install mercurial # needed for bottlechest (we'll move it to git!)
#
# Python libraries that are better installed globally
sudo apt-get install python3-dev
sudo apt-get install python3-pyqt4 # this is not pip-installable in py3
sudo apt-get install python3-numpy python3-scipy # pip complains about missing BLAS
    #
# Set up virtual environment
virtualenv --system-site-packages virtualenv/orange3
. virtualenv/orange3/bin/activate
    #
# Clone orange, get the remaining requirements and compile the Cython code
git clone https://github.com/biolab/orange3.git
cd orange3
pip install -r requirements
python setup.py develop
    #
# for widget SQL Table
sudo apt-get install postgresql libpg-dev
pip install psycopg2
    #
# orangeqt is needed for widget box plot
# -- this doesn't work, it builds orangeqt.so without init function!
cd
hg clone https://bitbucket.org/biolab/orange
cd orange/source/orangeqt
sudo apt-get install libqt4-dev python-sip-dev cmake
cmake

Add sample datasets

Orange3 is currently missing any datasets. Copy datasets from orange2 repository, add them to default search patch and fix the FileWidget.

Implement ReliefF

The code may assume (at least for the time being) that the data is stored in numpy matrices; if it is not, it is allowed to load them into numpy.

If we want to implement the ReliefF for data stored in SQL, we will probably at least partially do it on the server side.

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.