GithubHelp home page GithubHelp logo

guorbit / utilities Goto Github PK

View Code? Open in Web Editor NEW
1.0 0.0 0.0 313 KB

This repo is intended to be used for the guorbit software team as a utility library. See documentation below

Home Page: https://guorbit.github.io/utilities/

License: MIT License

Python 98.08% Dockerfile 1.92%

utilities's Introduction

example branch parameter codecov

example branch parameter

Note before installation: None of these commands have been properly tested. Make sure you installed the package in a virtual environment.

Installation

For installing the utilities repo as a package use the following commands in the terminal: Note: you need to have a working ssh key to access github from your current machine. you need to have wheel installed.

pip wheel . --no-deps --wheel-dir=dist

After build run the following command to install, the built package.

pip install .

Preparing for development

Prerequisites

It is recommended to use a virtual environment for development. To create a virtual environment, with python 3.10 as of now. To create a virtual environment run the following command in the terminal with anaconda:

conda create -n <env_name> python=3.10

Then activate the virtual environment by running the following command:

conda activate <env_name>

The rest of the dependencies are in the pyproject.toml file. To install those dependencies run the following command in the terminal:

pip install .[dev]

You might potentially have to build the project as well. If yes in that case run the following command:

pip wheel . --no-deps --wheel-dir=dist

Additionally, it is recommended to use certain extensions for development(in case you are using vs code). These extensions are listed as recommended in the utilities.code-workspace file. To install these extensions, open the utilities.code-workspace file in vs code and click on the install button when prompted. This also enables other checking tools like linting and type checking.

Project branching strategy

The project is using a staging branching combined with feature branching strategy. The main branch is the production branch. The staging branch is the staging branch meant for advanced longer testing. The development branch is the development branch with experimental features and less reliability. The feature branches are used for new feature development. The feature branches are branched off from the development branch. The development branch is branched off from the staging branch. At release the development branch is merged into the staging branch. The staging branch is merged into the main branch, if the branches pass sucsessfully the CI pipeline. - Automated build testing is still under considerationd

The following diagram shows the branching strategy:

Main ------------------------------------------> 
                                             ^  
                                            /
Staging -----------------------------------/--->
                                        ^
                                       /
Development --------------------------/-------->
                \                    /
                 \-Feature branches-/

Testing

To run the tests run the following command in the terminal:

pytest

If the above command doesn't work, run the following command:

python -m pytest

In case you want to run a coverage test, run the following command:

python -m pytest --cov --cov-report term

Linting

To run the linting tests run the following command in the terminal (this also loads in the linting configuration stored in the project root):

pylint --rcfile=.pylintrc utilities

Future plans (Ever expanding list)

  • Docker build and deployment for the package, to docker hub.
  • PyPi build and deployment for the package.
  • Additional CI pipeline for staging environment.
  • Mutation testing.
  • Tensorboard building package
  • Scalable ML data reading pipeline
  • Model conversion pipelines
  • Image manupulation tools
  • Image augmentation tools

Submit a suggestion for a new feature by creating an issue, or if you already have it done by creating a pull request to development.

utilities's People

Contributors

sajtospoga01 avatar 2684413s avatar jan-loettgen avatar

Stargazers

 avatar

utilities's Issues

master environment

Environment containing main code, this is where the main package is deployed after approvals from staging. Should require more approvals than staging

Enable usage of data loader classes

In the experimental flow reader enable the usage of classes implementing the data loader interface providing flexibility over the type of storage the data is read from

staging environment

Staging environment is the prerelease version of the library, passing the environment deploys a nightly version of the library, such that it is updated much faster than the normal version.
Additional testing required, with more realistic scenarios for testing actual functionality.

Add mini batch functionality

Add mini batch functionality to the flowreader.py API, such that custom training functions can set the desired minibatch size for training

development environement

The environment where all the under-development code is deployed to. Runs the standard lightweight tests to accelerate testing time

Enable async data loading

In the experimental flow reader add option to async load the next batch providing more seamless training

Add data reader heads

Would provide custom classes for reading specific datatypes. This provides two benefits:

  1. More maintainable code as it is abstracted out
  2. Way more flexible reader function

Issue with loading batch into datareader

Describe the bug
Flow generator experimental can't load partial batches (eg.: when its at the end of the dataset)

To Reproduce
Steps to reproduce the behavior:
set a batch size that is not divider of the dataset size, then start a training

Expected behavior
Load a partial batch

Please complete the following information:

  • TF 2.13
  • UTILS (2.0)

Additional context
Add any other context about the problem here.

Remove unnecessary reshape operations to the end. Reduces complexity

Describe the bug
There are a huge number of unnecessary flattening and unflattening operation in the flowgenerator_exp, which could be reduced to only one reducing complexity and possibly computational time

To Reproduce
Just look at source code

Expected behavior
None

Screenshots
No Screenshots

Please complete the following information:

  • Library version [e.g. 0.1]

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.