From 1e8bba9ecc5f2453c339744aaa865d05dd9f5d07 Mon Sep 17 00:00:00 2001 From: Alycia Date: Wed, 6 Mar 2019 10:13:42 -0800 Subject: [PATCH 1/9] Add code coverage --- .travis.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1d061e6..d44ea8f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,5 +6,15 @@ python: install: - pip install -r requirements.txt -# command to run tests -script: pytest +# command to run tests & document coverage +addons: + apt: + packages: + - python-coverage +script: + - pytest + - py.test --cov-report= --cov=AutoTransformR tests/ + +# code coverage badge +after_success: + - codecov From 97bda1e46ce08ea81d79e73775678c5e57850d7f Mon Sep 17 00:00:00 2001 From: Alycia Date: Wed, 6 Mar 2019 10:14:29 -0800 Subject: [PATCH 2/9] Fix typo in travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d44ea8f..3ac7724 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ addons: - python-coverage script: - pytest - - py.test --cov-report= --cov=AutoTransformR tests/ + - py.test --cov-report= --cov=AutoTransformPy tests/ # code coverage badge after_success: From ce3dc9409466e09b62c47b76dfc72b66259b2b05 Mon Sep 17 00:00:00 2001 From: Alycia Date: Wed, 6 Mar 2019 10:18:12 -0800 Subject: [PATCH 3/9] Fix error in codecov section of travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3ac7724..ea21406 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ addons: - python-coverage script: - pytest - - py.test --cov-report= --cov=AutoTransformPy tests/ + - pytest --cov=AutoTransformPy tests/ # code coverage badge after_success: From f7e415c21a10b9213c085ab043eb08617d070fc2 Mon Sep 17 00:00:00 2001 From: Alycia Date: Wed, 6 Mar 2019 10:24:09 -0800 Subject: [PATCH 4/9] More codecov error fixing --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index ea21406..b4d6a97 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,8 @@ python: # command to install dependencies install: - pip install -r requirements.txt + - pip install codecov + - pip install pytest-cov # command to run tests & document coverage addons: From 9ad5ede4a35445473859d8da70cf7f9ab7e490c1 Mon Sep 17 00:00:00 2001 From: Alycia Date: Wed, 6 Mar 2019 10:45:12 -0800 Subject: [PATCH 5/9] Add logo and codecov badge --- README.md | 67 ++++++++++++++++++------------------------------------- 1 file changed, 22 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 78c9d51..39a727f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -# AutoTransform +# AutoTransformPy [![Build Status](https://travis-ci.org/UBC-MDS/AutoTransformPy.svg?branch=master)](https://travis-ci.org/UBC-MDS/AutoTransformPy) +[![codecov](https://codecov.io/gh/UBC-MDS/AutoTransformPy/branch/master/graph/badge.svg)](https://codecov.io/gh/UBC-MDS/AutoTransformPy) + ## Contributors @@ -10,11 +12,18 @@ | Brenden Everitt | [everittB](https://github.com/everittB) | | Rayce Rossum | [RayceRossum](https://github.com/RayceRossum) | +To contribute to this project, you must adhere to the terms outlined in our [Code of Conduct.](https://github.com/UBC-MDS/AutoTransformPy/blob/master/CONDUCT.md) ## Overview A common application of supervised machine learning is identifying the object of an image. One issue that users encounter is a model misclassifying a new image because the object is rotated or translated in some way that was not captured in the training images. The purpose of this package is to create a more robust set of images for users to train their model with. The package will accept an image as an input, apply a series of transformations to it, and return an array of transformed pixel values. Transformations include: rotating, mirroring, and translating (shifting the object's location in the frame). +## Installation + +To install AutoTransformPy. In your console, type: + +`pip install git+https://github.com/UBC-MDS/AutoTransformPy.git` + ## Functions #### Rotate @@ -35,20 +44,15 @@ Translate will move an image within its frame, so that the topic of the image wi Scikit-image is a image processing package that contains functions for performing various operations to images, such as rotating or resizing, among many others. AutoTransformPy utilizes some of this packages functionality and builds it out, so the user can easily gain many variations of an image. The intended usage of this package is for the development of a larger set of training images for the training of an image classification algorithms. -## Installation - -To install AutoTransformPy: - -1. In your console, type: `pip install git+https://github.com/UBC-MDS/AutoTransformPy.git` -2. You can now use AutoTransformPy. See usage instructions below: - ## Usage ### Rotate -`from AutoTransformPy.rotate import rotate` +``` +from AutoTransformPy.rotate import rotate -`rotate(image_path, num_images, max_rotation)` +rotate(image_path, num_images, max_rotation) +``` **Arguments:** @@ -67,9 +71,11 @@ To install AutoTransformPy: ### Mirror -`from AutoTransformPy.mirror import mirror` +``` +from AutoTransformPy.mirror import mirror -`mirror(image_path, direction)` +mirror(image_path, direction) +``` **Arguments:** @@ -87,9 +93,11 @@ To install AutoTransformPy: ### Translate -`from AutoTransformPy.translate import translate` +``` +from AutoTransformPy.translate import translate -`translate(image_path, num_images, max_translation)` +translate(image_path, num_images, max_translation) +``` **Arguments:** @@ -144,34 +152,3 @@ imshow(r[1]) # rotate function imshow(t[1]) # translate function ``` - -## Testing - -#### Output of Tests: - -``` -================================================= test session starts ================================================= -platform win32 -- Python 3.6.8, pytest-4.1.1, py-1.7.0, pluggy-0.8.1 -rootdir: C:\Users\Alycia\Desktop\data_science\block_5\AutoTransformPy, inifile: -plugins: remotedata-0.3.1, openfiles-0.3.2, doctestplus-0.2.0, arraydiff-0.3 -collected 6 items - -test_mirror.py .. [ 33%] -test_rotate.py .. [ 66%] -test_translate.py .. [100%] - -============================================== 6 passed in 27.15 seconds ============================================== - -``` - -#### Code Coverage: -``` -Name Stmts Miss Cover Missing ----------------------------------------------------------------------------------------------------------------------------- - AutoTransformPy/__init__.py 0 0 100% - AutoTransformPy/mirror.py 22 0 100% - AutoTransformPy/rotate.py 20 0 100% - AutoTransformPy/translate.py 21 0 100% ----------------------------------------------------------------------------------------------------------------------------- -TOTAL 63 0 100% -``` From 247e78df8bf711f02e4c89ebb738fe9366a3479a Mon Sep 17 00:00:00 2001 From: Alycia Date: Wed, 6 Mar 2019 10:47:12 -0800 Subject: [PATCH 6/9] grammar fixes --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 39a727f..e8b46b8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# AutoTransformPy +# AutoTransformPy [![Build Status](https://travis-ci.org/UBC-MDS/AutoTransformPy.svg?branch=master)](https://travis-ci.org/UBC-MDS/AutoTransformPy) [![codecov](https://codecov.io/gh/UBC-MDS/AutoTransformPy/branch/master/graph/badge.svg)](https://codecov.io/gh/UBC-MDS/AutoTransformPy) @@ -20,7 +20,7 @@ A common application of supervised machine learning is identifying the object of ## Installation -To install AutoTransformPy. In your console, type: +In your console, type: `pip install git+https://github.com/UBC-MDS/AutoTransformPy.git` From 64c8c0e38c14735c13efcb15885c35299244d786 Mon Sep 17 00:00:00 2001 From: Alycia Date: Wed, 6 Mar 2019 10:47:47 -0800 Subject: [PATCH 7/9] Add logo image file --- docs/logopy.png | Bin 0 -> 26207 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/logopy.png diff --git a/docs/logopy.png b/docs/logopy.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9ba487bccdd90199dda165ac84c576bdb3f5c0 GIT binary patch literal 26207 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 Date: Wed, 6 Mar 2019 10:48:47 -0800 Subject: [PATCH 8/9] Fix logo link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e8b46b8..9078f78 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# AutoTransformPy +# AutoTransformPy [![Build Status](https://travis-ci.org/UBC-MDS/AutoTransformPy.svg?branch=master)](https://travis-ci.org/UBC-MDS/AutoTransformPy) [![codecov](https://codecov.io/gh/UBC-MDS/AutoTransformPy/branch/master/graph/badge.svg)](https://codecov.io/gh/UBC-MDS/AutoTransformPy) From 8b84837a2afd6da533ac958360eb08373524fd97 Mon Sep 17 00:00:00 2001 From: Alycia Butterworth <42809905+alyciakb@users.noreply.github.com> Date: Wed, 6 Mar 2019 10:57:03 -0800 Subject: [PATCH 9/9] Small edits to full usage example --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9078f78..4e916da 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,6 @@ translate(image_path, num_images, max_translation) from AutoTransformPy.mirror import mirror from AutoTransformPy.rotate import rotate from AutoTransformPy.translate import translate -from skimage.io import imshow # perform transformations m = mirror("../tests/imgs/milad.jpg", "horizontal") @@ -142,13 +141,14 @@ m.shape # mirror function r.shape # rotate function t.shape # translate function +# You can use skimage.io to view the transformed images: +from skimage.io import imshow + # display original image imshow(m[0]) # using mirror function as example - # display one of the transformed images imshow(m[1]) # mirror function imshow(r[1]) # rotate function imshow(t[1]) # translate function - ```