Boxx
Tool-box for efficient build and debug in Python. Especially for Scientific Computing and Computer Vision.
Install / Use
/learn @DIYer22/BoxxREADME
Introduce | Install | Tutorial | Examples | Acknowledgments
</div> <div align="center"> <sub>Code with <span style="color:red">❤︎</span> by <a href="https://github.com/DIYer22">DIYer22</a> and <a href="https://github.com/DIYer22/boxx/graphs/contributors"> contributors </a> </sub> </div> <br/>1. Introduce
Box-X is a Tool-box for Efficient Build and Debug in Python.
Especially for Scientific Computing and Computer Vision.
So, all Tools are divided into 2 parts by wether the tool is general used:
-
General Python Tool: Tools could be used anywhere in Python
-
Scientific Computing and Computer Vision Tool: Those tools are useful in Scientific Computing and Computer Vision field
P.S. boxx supports both Python 2/3 on Linux | macOS | Windows with CPython | IPython | Spyder | Notebook environment.
2. Install
pip install boxx
<!--
#### Via pip
#### From source
```bash
git clone https://github.com/DIYer22/boxx
cd boxx/
python setup.py install
```
#### If no git
```
pip install boxx -U
```
💡 **Note:**
* Recommended to install via git or source because PyPI mirrors may has a big delay.
* Please ensure `boxx`'s version > `0.9.1`. Otherwise, please install from source.
-->
3. Tutorial
Box-X's Tutorial is a Jupyter Notebook file
There are 3 methods to run or view this Notebook file
Method 1: Executable Interactive Online Notebook
We use Binder to run Tutorial Notebook in an executable interactive online jupyer environment.
That's mean you can run code in notebook rightnow in your browser without download or install anything.
Method 2: Download and Run at Local
git clone https://github.com/DIYer22/boxx
cd boxx/
python setup.py install
jupyter notebook
Then open ./tutorial_for_boxx.ipynb in notebook.
Method 3: Static Noetbook
Just view the Tutorial Notebook.
4. Examples
Examples are divided into 2 parts too.
General Python Tool on left, Scientific Computing and Computer Vision Tool on right.
💡 Note:
- Click the image will see more clearer image, and if image is GIF, GIF will be replayed
- The following content is layout of desktop browser, if you are viewing through a mobile browser, it is recommended to visit => Static Tutorial
General Python Tool
<hr></hr>▶ p/x is better way to print(x)
p/x will print(x) and return x

💡 Note: p/x is easy to print value in expression.
<hr></hr>
<br><br>
<br><br>
▶ Use g.name = x or g.name/x to transport variable to Python interactive console
ggis the meaning of "to Global and log", has same usage asg, butggwill print the transported variable.- if variable name exists in console before, the variable's value will be covered by new value. <hr></hr> <br><br> <br><br>
▶ g() to transport all vars that in the function to Python interactive console
💡 Note: g() is a useful tool for debug. import boxx.g is convenient way to use g() instead of from boxx import g;g()(import boxx.gg is avaliable too)
<hr></hr>
<br><br>
<br><br>
▶ with p, with g, with gg are mulit variables version of p, g, gg that work under "with statement"
Only act on interested variables which is under "with statement"
💡 Note:
-
with p,with g,with ggonly act on assignment variables under "with statement". -
If variable's name exists in
</td> <td valign="top">locals()before andid(variable)not change ,variable may not be detected <hr></hr>
Scientific Computing and Computer Vision
Useful tools in Scientific Computing and Computer Vision field. All tools support array-like types, include numpy, torch.tensor, mxnet.ndarray, PIL.Image .etc
💡 Note: If you are using ssh to execute code on a remote server, it is recommended that ssh plus -X make visualized plt charts can be transferred to the local and display, like ssh -x user@host.
<hr></hr>
▶ loga to visualization matrix and tensor
loga is short of "log array", loga will show many attributes of array-like object.

💡 Note: loga analysis array-like object by it's shape, max, min, mean, and distribute. Support numpy, torch.tensor, mxnet.ndarray, PIL.Image .etc
<hr></hr>
<br><br>
<br><br>
▶ show is easy to do imshow, even images are in complex struct
show could find every image in complex struct and imshow they.

💡 Note: if args inculde function(like torgb). those functions will process all numpys befor imshow.
<hr></hr>
<br><br>
<br><br>
▶ tree for visualization complex struct
like tree command in shell, boxx.tree could visualization any struct in tree struct view.

💡 Note: tree support types include list, tuple, dict, numpy, torch.tensor/Dataset/DataLoader, mxnet.ndarray, PIL.Image.etc
<hr></hr>
</td>
▶ boxx debug tool matrix
| How many vars \ Operation | print | transport | print & transport |
| :---- | :---- | :---- | :---- |
| Single variable | p/x | g.name/x | gg.name/x|
|Multi variables | with p: | with g: | with gg: |
|All locals()| p() | g() | gg() |
|All locals()_2 | import boxx.p | import boxx.g | import boxx.gg |
💡 Note:
- transport mean "transport variable to Python interactive console"
- All
locals()mean operation will act on all variables in the function or module - All
locals()_2 : whenboxxare not imported,import boxx.{operation}is a convenient way to execution operation <br><br> <hr></hr>
▶ what to know "What's this?"
💡 Note: what(x) will show "what is x?" by pretty print it's Self, Document, Father Classes, Inner Struct and Attributes. It is a supplement of help(x).
<br><br>
<hr></hr>
▶ timeit is convenient timing tool
💡 Note: timeit will timing code block under "with statement" and print spend time in blue color.
<br><br>
<hr></hr>
▶ mapmp is Multi Process version of map
mapmp is the meaning of "MAP for Multi Process", has the same usage as map but faster.
💡 Note:
- pool parameter in
mapmpmean the number of Process, the default is the number of CPUs in the system. - In multi process programs, display processing progress is troublesome. printfreq parameter in
mapmpcan handle this problem. - Like
map,mapmpsupport muliti args to as input to functi
