diff --git a/README.md b/README.md index d7f4041..fbd1443 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/Use case(brief) b/Use case(brief) new file mode 100644 index 0000000..d9257ed --- /dev/null +++ b/Use case(brief) @@ -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 . diff --git a/bioimage_quant/cli.py b/bioimage_quant/cli.py index 68ac151..f84be29 100644 --- a/bioimage_quant/cli.py +++ b/bioimage_quant/cli.py @@ -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() + + diff --git a/setup.py b/setup.py index a8efd16..c74d995 100644 --- a/setup.py +++ b/setup.py @@ -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 :) @@ -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): @@ -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, @@ -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' ],