Skip to content

Latest commit

 

History

History
235 lines (139 loc) · 6.36 KB

README.md

File metadata and controls

235 lines (139 loc) · 6.36 KB

Examples:

--rotate-270

$ podman run --rm -v $PWD/incoming:/incoming -v $PWD/outgoing:/outgoing --privileged -it localhost/pl-pygifsicle:latest gifsicle --rotate-270 --resize-width 100 /incoming/python.gif -o /outgoing/python.gif

Before

--rotate-90 before

After

--rotate-270 after

--resize-100

podman run --rm -v $PWD/incoming:/incoming -v $PWD/outgoing:/outgoing --privileged -it localhost/pl-pygifsicle:latest gifsicle --rotate-270 --resize-width 100 /incoming/python.gif -o /outgoing/python.gif

--rotate-180 --resize-width 222

podman run --rm -v $PWD/incoming:/incoming -v $PWD/outgoing:/outgoing --privileged -it loacalhost/pl-pygifsicle:latest gifsicle --rotate-180 --resize-width 222 /incoming/dog.gif -o /outgoing/dog.gif

Before

--rotate-90 before

After

--rotate-90 after

--rotate-90

podman run --rm -v $PWD/incoming:/incoming -v $PWD/outgoing:/outgoing --privileged -it localhost/pl-pygifsicle:latest gifsicle --rotate-90 --resize-width 100 /incoming/python.gif -o /outgoing/python.gif

Before

--rotate-90 before

After

--flip-horizontal --colors 3 after

--resize-width 200

podman run --rm -v $PWD/incoming:/incoming  -v $PWD/outgoing:/outgoing --privileged -it localhost/pl-pygifslce:latest gifsicle --resize-width 200  /incoming/giphy.gif -o /outgoing/giphy.gif

Before

--rotate-90 before

After

--rotate-90 after

--use-colormap 'gray'

podman run --rm -v $PWD/incoming:/incoming  -v $PWD/outgoing:/outgoing --privileged -it localhost/pl-pygifslce:latest gifsicle --resize-width 200  /incoming/giphy.gif -o /outgoing/giphy.gif

Before

--use-colormap 'gray' before

After

--use-colormap 'gray' after

--rotate-180--

podman run --rm -v $PWD/incoming:/incoming  -v $PWD/outgoing:/outgoing --privileged -it localhost/pl-pygifslce:latest gifsicle --rotate-180  /incoming/fabien2022.gif -o /outgoing/fabien2022.gif

Before

--rotate-180 before

After

--rotate-180 after

--resize-width 200 --rotate-180 --colors 10

podman run --rm -v $PWD/incoming:/incoming -v $PWD/outgoing:/outgoing --privileged -it localhost/pl-pygifsicle:latest gifsicle --resize-width 200 --rotate-180 --colors 10 /incoming/selfprogramming.gif -o /outgoing/selfprogramming.gif

Before

--resize-width 200 --rotate-180 --colors 10 before

After

--resize-width 200 --rotate-180 --colors 10 after

--resize-width 200

podman run --rm -v $PWD/incoming:/incoming  -v $PWD/outgoing:/outgoing --privileged -it localhost/pl-pygifslce:latest gifsicle --resize-width 200  /incoming/giphy.gif -o /outgoing/giphy.gif

Before

--resize-width 200 before

After

--resize-width 200 after

ChRIS PLugin for pygifsicle

Version MIT License ci

pl-pygifsicle is a ChRIS ds plugin which takes in ... as input files and creates ... as output files.

Abstract

...

Installation

pl-pygifsicle is a ChRIS plugin, meaning it can run from either within ChRIS or the command-line.

Get it from chrisstore.co

Local Usage

To get started with local command-line usage, use Apptainer (a.k.a. Singularity) to run pl-pygifsicle as a container:

apptainer exec docker://fnndsc/pl-pygifsicle pygifsicle [--args values...] input/ output/

To print its available options, run:

apptainer exec docker://fnndsc/pl-pygifsicle pygifsicle --help

Examples

pygifsicle requires two positional arguments: a directory containing input data, and a directory where to create output data. First, create the input directory and move input data into it.

mkdir incoming/ outgoing/
mv some.dat other.dat incoming/
apptainer exec docker://fnndsc/pl-pygifsicle:latest pygifsicle [--args] incoming/ outgoing/

Development

Instructions for developers.

Building

Build a local container image:

docker build -t localhost/fnndsc/pl-pygifsicle .

Running

Mount the source code pygifsicle.py into a container to try out changes without rebuild.

docker run --rm -it --userns=host -u $(id -u):$(id -g) \
    -v $PWD/pygifsicle.py:/usr/local/lib/python3.10/site-packages/pygifsicle.py:ro \
    -v $PWD/in:/incoming:ro -v $PWD/out:/outgoing:rw -w /outgoing \
    localhost/fnndsc/pl-pygifsicle pygifsicle /incoming /outgoing

Testing

Run unit tests using pytest. It's recommended to rebuild the image to ensure that sources are up-to-date. Use the option --build-arg extras_require=dev to install extra dependencies for testing.

docker build -t localhost/fnndsc/pl-pygifsicle:dev --build-arg extras_require=dev .
docker run --rm -it localhost/fnndsc/pl-pygifsicle:dev pytest

Release

Steps for release can be automated by Github Actions. This section is about how to do those steps manually.

Increase Version Number

Increase the version number in setup.py and commit this file.

Push Container Image

Build and push an image tagged by the version. For example, for version 1.2.3:

docker build -t docker.io/fnndsc/pl-pygifsicle:1.2.3 .
docker push docker.io/fnndsc/pl-pygifsicle:1.2.3

Get JSON Representation

Run chris_plugin_info to produce a JSON description of this plugin, which can be uploaded to a ChRIS Store.

docker run --rm localhost/fnndsc/pl-pygifsicle:dev chris_plugin_info > chris_plugin_info.json