Skip to content

Commit 413e1ca

Browse files
committedOct 9, 2020
release cleanup
* update README * add lux-widget as requirement * all version numbers read from _version.py * add MANIFEST.in
1 parent d8f95cd commit 413e1ca

7 files changed

+48
-32
lines changed
 

‎MANIFEST.in

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
include requirements.txt

‎README.md

+31-27
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@
2222
</a>
2323
</p>
2424

25-
Lux is a Python library that makes data science easier by automating aspects of the data exploration process. Lux is designed to facilitate faster experimentation with data, even when the user does not have a clear idea of what they are looking for. Visualizations are diplayed via [an interactive Jupyter widget](https://github.com/lux-org/lux-widget) to allow users to quickly browse through large collections of data directly within their Jupyter notebooks.
25+
Lux is a Python library that makes data science easier by automating aspects of the data exploration process. Lux facilitate faster experimentation with data, even when the user does not have a clear idea of what they are looking for. Visualizations are displayed via [an interactive Jupyter widget](https://github.com/lux-org/lux-widget) to allow users to quickly browse through large collections of data directly within their Jupyter notebooks.
2626

2727
Here are some [slides](http://dorisjunglinlee.com/files/Zillow_07_2020_Slide.pdf) from a recent talk on Lux.
2828

2929
Try out Lux on your own in a live Jupyter Notebook [here](https://mybinder.org/v2/gh/lux-org/lux-binder/master?urlpath=tree/examples/demo)!
3030

3131
# Getting Started
3232

33-
To start using Lux, simply add an additional import statement alongside your Pandas import.
33+
To start using Lux, simply add an extra import statement along with your Pandas import.
3434

3535
```python
3636
import lux
@@ -68,22 +68,22 @@ For example, we might be interested in the attributes `AverageCost` and `SATAver
6868
alt="Next-step Recommendations Based on User Context"
6969
style="width:600px" />
7070

71-
The left-hand side of the widget shows the current visualization, i.e. the current visualization generated based on what the user is interested in. On the right, Lux generates three sets of recommendations, organized as separate tabs on the widget:
71+
The left-hand side of the widget shows the current visualization, i.e., the current visualization generated based on what the user is interested in. On the right, Lux generates three sets of recommendations, organized as separate tabs on the widget:
7272

7373
- `Enhance` adds an additional attribute to the current selection, essentially highlighting how additional variables affect the relationship of `AverageCost` and `SATAverage`. We see that if we breakdown the relationship by `FundingModel`, there is a clear separation between public colleges (shown in red) and private colleges (in blue), with public colleges being cheaper to attend and with SAT average of lower than 1400.
7474
<img src="https://github.com/lux-org/lux-resources/blob/master/readme_img/enhance.png?raw=true"
7575
alt="Enhance Recommendations"
7676
style="width:600px" />
77-
- `Filter` adds a filter to the current selection, while keeping attributes (on the X and Y axes) fixed. These visualizations shows how the relationship of `AverageCost` and `SATAverage` changes for different subsets of data. For instance, we see that colleges that offer Bachelor's degree as its highest degree offered shows a roughly linear trend between the two variables.
77+
- `Filter` adds a filter to the current selection, while keeping attributes (on the X and Y axes) fixed. These visualizations show how the relationship of `AverageCost` and `SATAverage` changes for different subsets of data. For instance, we see that colleges that offer Bachelor's degree as its highest degree show a roughly linear trend between the two variables.
7878
<img src="https://github.com/lux-org/lux-resources/blob/master/readme_img/filter.png?raw=true"
7979
alt="Filter Recommendations"
8080
style="width:600px" />
81-
- `Generalize` removes an attribute to display a more general trend, showing the distributions of `AverageCost` and `SATAverage` on its own. From the `AverageCost` histogram, we see that there are many colleges with average cost of around $20000 per year, corresponding to the bulge we see in the scatterplot view.
81+
- `Generalize` removes an attribute to display a more general trend, showing the distributions of `AverageCost` and `SATAverage` on its own. From the `AverageCost` histogram, we see that many colleges with average cost of around $20000 per year, corresponding to the bulge we see in the scatterplot view.
8282
<img src="https://github.com/lux-org/lux-resources/blob/master/readme_img/generalize.png?raw=true"
8383
alt="Generalize Recommendations"
8484
style="width:600px" />
8585

86-
See [this page](https://lux-api.readthedocs.io/en/latest/source/guide/intent.html) more information on additional ways for specifying the intent.
86+
See [this page](https://lux-api.readthedocs.io/en/latest/source/guide/intent.html) for more information on additional ways for specifying the intent.
8787

8888
### Easy programmatic access of exported visualization objects:
8989

@@ -94,7 +94,7 @@ Now that we have found some interesting visualizations through Lux, we might be
9494
style="width:600px" />
9595

9696
### Quick, on-demand visualizations with the help of automatic encoding:
97-
We've seen how `Vis`s are automatically generated as part of the recommendations, users can also create their own Vis via the same syntax as specifying the intent. Lux is built on the philosophy that users should always be able to visualize anything they want, without having to think about *how* the visualization should look like. Lux automatically determines the mark and channel mappings based on a set of [best practices](http://hosteddocs.ittoolbox.com/fourshowmeautomaticpresentations.pdf) from [Tableau](https://www.tableau.com). The visualizations are rendered via [Altair](https://github.com/altair-viz/altair/tree/master/altair) into [Vega-Lite](https://github.com/vega/vega-lite) specifications.
97+
We've seen how `Vis`s are automatically generated as part of the recommendations. Users can also create their own Vis via the same syntax as specifying the intent. Lux is built on the philosophy that users should always be able to visualize anything they want, without having to think about *how* the visualization should look like. Lux automatically determines the mark and channel mappings based on a set of [best practices](http://hosteddocs.ittoolbox.com/fourshowmeautomaticpresentations.pdf) from [Tableau](https://www.tableau.com). The visualizations are rendered via [Altair](https://github.com/altair-viz/altair/tree/master/altair) into [Vega-Lite](https://github.com/vega/vega-lite) specifications.
9898

9999
```python
100100
from lux.vis.Vis import Vis
@@ -125,23 +125,27 @@ For example, we might be interested in looking at how the `AverageCost` distribu
125125

126126
To find out more about other features in Lux, see the complete documentation on [ReadTheDocs](https://lux-api.readthedocs.io/).
127127

128-
<!-- ## Quick Installation-->
128+
# Quick Installation
129129

130-
<!--Install the Python Lux API through [PyPI](https://pypi.org/project/lux-api/):-->
130+
To get started, Lux can be installed through [PyPI](https://pypi.org/project/lux-api/). This installs both the lux-api (this repo) and [lux-widget](https://pypi.org/project/lux-widget/) (the Lux Jupyter widget frontend).
131131

132-
<!--```bash
133-
pip install lux-api
134-
```-->
132+
```bash
133+
pip install lux-api
134+
```
135135

136-
<!--Install the Lux Jupyter widget through [npm](https://www.npmjs.com/package/lux-widget): -->
136+
To install and activate the Jupyter notebook extension:
137137

138-
<!--```bash
139-
npm i lux-widget
140-
```-->
138+
```bash
139+
jupyter nbextension install --py luxwidget
140+
jupyter nbextension enable --py luxwidget
141+
```
141142

142-
# Installation
143+
If the installation happens correctly, you should see two `- Validating: OK` after executing the two lines above.
144+
If you encounter issues with the installation, please refer to [this page](https://lux-api.readthedocs.io/en/latest/source/guide/FAQ.html#troubleshooting-tips) to troubleshoot the installation.
143145

144-
To setup Lux manually for development purposes, you should clone the two Github repos for Lux: 1) the core Python [Lux API](https://github.com/lux-org/lux) and 2) the [Jupyter widget frontend](https://github.com/lux-org/lux-widget).
146+
# Dev Installation
147+
148+
To set up Lux manually for development purposes, you should clone the two Github repos for Lux: 1) the core Python [Lux API](https://github.com/lux-org/lux) and 2) the [Jupyter widget frontend](https://github.com/lux-org/lux-widget).
145149

146150
To install the Python Lux API:
147151

@@ -155,17 +159,17 @@ To install the [Lux Jupyter Widget](https://github.com/lux-org/lux-widget):
155159

156160
```bash
157161
pip install git+https://github.com/lux-org/lux-widget
158-
jupyter nbextension install --py luxWidget
159-
jupyter nbextension enable --py luxWidget
162+
jupyter nbextension install --sys-prefix --symlink --overwrite --py luxwidget
163+
jupyter nbextension enable --sys-prefix --py luxwidget
160164
```
161165

166+
# Support and Resources
162167

163-
<!-- See the [installation page](https://lux-api.readthedocs.io/en/latest/source/getting_started/installation.html) for more information. -->
164-
165-
<!-- For more detailed examples of how to use Lux, check out this demo [notebook](https://github.com/lux-org/lux/blob/master/examples/demo.ipynb). -->
166-
167-
# Dev Support
168-
Lux is undergoing active development. Please report any bugs, issues, or requests through [Github Issues](https://github.com/lux-org/lux/issues) or post on the [#help](https://lux-project.slack.com/archives/C0174H16CK0) channel in the <a href="http://lux-project.slack.com/">Lux Slack org</a>.
168+
Lux is undergoing active development. If you are interested in using Lux, we would love to hear from you. Any feedback, suggestions, and contributions for improving Lux are welcome.
169169

170-
If you are interested in participating in a user study on Lux, please contact <a href="mailto:dorisjunglinlee@gmail.com">Doris Lee</a> for more detail.
170+
Other additional resources:
171171

172+
- Visit [ReadTheDoc](https://lux-api.readthedocs.io/en/latest/) for more detailed documentation.
173+
- Check out this [notebook tutorial series](https://github.com/lux-org/lux/tree/master/examples/tutorial) on how to use Lux.
174+
- Join the [Lux Slack channel](http://lux-project.slack.com/) for support and discussion.
175+
- Report any bugs, issues, or requests through [Github Issues](https://github.com/lux-org/lux/issues).

‎lux/__init__.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@
1414

1515
# Register the commonly used modules (similar to how pandas does it: https://github.com/pandas-dev/pandas/blob/master/pandas/__init__.py)
1616
from lux.vis.Clause import Clause
17-
from lux.core.frame import LuxDataFrame
17+
from lux.core.frame import LuxDataFrame
18+
from ._version import __version__, version_info

‎lux/_version.py

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env python
2+
# coding: utf-8
3+
4+
version_info = (0, 2, 0)
5+
__version__ = ".".join(map(str, version_info))

‎requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
scipy>=1.3.3
22
altair>=4.0.0
33
jupyter
4-
notebook
54
vega_datasets
65
pandas>=1.1.0
76
pytest>=5.3.1
87
pytest-cov>=2.8.1
98
scikit-learn>=0.22
109
Sphinx>=3.0.2
1110
sphinx-rtd-theme>=0.4.3
11+
lux-widget
1212
# Install only to use SQLExecutor
1313
# psycopg2>=2.8.5
1414
# psycopg2-binary>=2.8.5

‎setup.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@
1010
with open(path.join(HERE, 'requirements.txt')) as fp:
1111
install_requires = fp.read()
1212

13+
version_dict = {}
14+
with open(path.join(HERE, 'lux/_version.py')) as fp:
15+
exec(fp.read(), {}, version_dict)
16+
version = version_dict["__version__"]
17+
1318
setup(
1419
name='lux-api', # PyPI Name (pip install [name])
15-
version='0.2.0', # Required
20+
version=version, # Required
1621
description='A Python API for Intelligent Data Discovery',
1722
long_description=long_description,
1823
long_description_content_type='text/markdown',
@@ -30,7 +35,7 @@
3035
'License :: OSI Approved :: Apache Software License',
3136
'Programming Language :: Python :: 3'
3237
],
33-
keywords='visualization analytics data-science insight discovery',
38+
keywords= ['Visualization','Analytics','Data Science','Data Analysis'],
3439
include_data_package=True,
3540
packages=find_packages(), # Required
3641
python_requires='>=3.5',

‎tests/test_performance.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def test_q1_performance_census():
3030
delta2 = toc2 - toc
3131
print(f"1st display Performance: {delta:0.4f} seconds")
3232
print(f"2nd display Performance: {delta2:0.4f} seconds")
33-
assert delta < 4.0, "The recommendations on Census dataset took a total of {delta:0.4f} seconds, longer than expected."
33+
assert delta < 4.5, "The recommendations on Census dataset took a total of {delta:0.4f} seconds, longer than expected."
3434
assert delta2 < 0.15 <delta, "Subsequent display of recommendations on Census dataset took a total of {delta2:0.4f} seconds, longer than expected."
3535

3636
assert df.data_type_lookup == {'age': 'quantitative',

0 commit comments

Comments
 (0)
Please sign in to comment.