Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 37 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,44 @@
Simple python-based quantification software for simple biological images. Currently implemented for protein and DNA gels/blots and yeast spotting assays. Takes an input image which gets cropped by the user and converts to a grayscale numpy array using the Python Image Library (PIL). Then splits image into user-specified lanes/boxes, and the average intensity of every pixel per lane/band/blot/spot is calculated.

For gels, intensities have the option to be gaussian-weighted so that the middle of the gel band contributes more to the average than the outer edges, as other lanes in gels sometimes bleed into the lane of interest. Data for each slice is baselined given a user-specified baselining region. This data is plotted and can be quantified for band intensities.
# GelQuant

Note: updates needed for SDS-PAGE gel analysis (spotting assay approach is much faster/better implemented). The pipeline is functional and accurate but slow; old code is preserved to reflect analysis in https://elifesciences.org/articles/54100.
Simple band quantification software for protein and DNA gels/blots.

See example .ipynb notebooks for details/example usage.
## Overview
GelQuant processes gel/blot images for quantification. The software allows users to:
- **Import and crop** gel images as desired.
- **Split the image** into user-specified vertical lanes.
- **Convert lanes to numerical data** using NumPy.
- **Calculate average RGB intensity** for each row in the lane.
- **Apply Gaussian weighting** to emphasize the middle of the lane while reducing edge interference.
- **Baseline correction** based on user-specified regions.
- **Plot the data** and perform band intensity quantification.

To install a development version, clone this repo and pip install:

## Example Usage
For an example of how GelQuant works, check out:
`notebook-example.ipynb`
`gel-example.png`

## Installation
To install a development version, clone this repository and install it with `pip`:

git clone https://github.com/harmslab/gelquant.git
cd gelquant
pip install -e .

Dependencies: matplotlib, numpy, PIL, pandas, os, natsort, scipy
## Dependencies

GelQuant requires the following Python libraries:

matplotlib
,numpy
,pillow (PIL)
,pandas
,os
,natsort
,scipy

note: for os (built-in, no installation needed)

To Install
pip install matplotlib numpy pillow pandas natsort scipy
28 changes: 28 additions & 0 deletions Use case(brief)
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# GelQuant

Simple band quantification software for protein and DNA gels/blots.

## ** Overview**
GelQuant processes gel/blot images for quantification. The software allows users to:
- **Import and crop** gel images as desired.
- **Split the image** into user-specified vertical lanes.
- **Convert lanes to numerical data** using NumPy.
- **Calculate average RGB intensity** for each row in the lane.
- **Apply Gaussian weighting** to emphasize the middle of the lane while reducing edge interference.
- **Baseline correction** based on user-specified regions.
- **Plot the data** and perform band intensity quantification.


## ** Example Usage**
For an example of how GelQuant works, check out:
`notebook-example.ipynb`
`gel-example.png`

---

## ** Installation
To install a **development version**, clone this repository and install it with `pip`:
```sh
git clone https://github.com/harmslab/gelquant.git
cd gelquant
pip install -e .
7 changes: 4 additions & 3 deletions bioimage_quant/cli.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import argparse

def cli():

parser = argparse.ArgumentParser()
parser.add_argument('test')
parser = argparse.ArgumentParser(description="GelQuant CLI")
parser.add_argument('test', nargs='?', help="Test argument (optional)", default="No argument provided")

args = parser.parse_args()
print(args.test)

if __name__ == "__main__":
cli()


28 changes: 18 additions & 10 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@

# Package meta-data.
NAME = 'gelquant'
DESCRIPTION = 'gel analysis pipeline'
DESCRIPTION = 'Gel analysis pipeline'
URL = 'https://github.com/jharman25/gelquant'
EMAIL = 'josephharman25@gmail.com'
AUTHOR = 'Joseph Harman'

# What packages are required for this module to be executed?
REQUIRED = [
'matplotlib', 'numpy', 'pandas'
'matplotlib', 'numpy', 'pillow', 'pandas', 'natsort', 'scipy'
]

# The rest you shouldn't have to touch too much :)
Expand All @@ -32,13 +32,20 @@

# Import the README and use it as the long-description.
# Note: this will only work if 'README.rst' is present in your MANIFEST.in file!
with io.open(os.path.join(here, 'README.md'), encoding='utf-8') as f:
long_description = '\n' + f.read()
try:
with io.open(os.path.join(here, 'README.md'), encoding='utf-8') as f:
long_description = '\n' + f.read()
except FileNotFoundError:
long_description = DESCRIPTION # Fallback to short description if README is missing

# Load the package's __version__.py module as a dictionary.
about = {}
with open(os.path.join(here, NAME, '__version__.py')) as f:
exec(f.read(), about)
version_path = os.path.join(here, NAME, '__version__.py')
if os.path.exists(version_path):
with open(version_path) as f:
exec(f.read(), about)
else:
about['__version__'] = '0.1.0' # Default version if file is missing


class UploadCommand(Command):
Expand Down Expand Up @@ -88,7 +95,7 @@ def run(self):
# py_modules=['mypackage'],

entry_points={
'console_scripts': ['test_prote=gelquant.cli:cli'],
'console_scripts': ['gelquant=gelquant.cli:cli'],
},
install_requires=REQUIRED,
include_package_data=True,
Expand All @@ -101,10 +108,11 @@ def run(self):
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Pywthon :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy'
],
Expand Down