Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
450 commits
Select commit Hold shift + click to select a range
26b8429
module name
joshqsumner Oct 27, 2025
077fd5b
changing module name back
joshqsumner Oct 27, 2025
ec799c1
moving helper back to main sharpen module
joshqsumner Oct 27, 2025
37ac07a
importing np and cv2
joshqsumner Oct 27, 2025
5f291e1
less specific namespace
joshqsumner Oct 27, 2025
0fbcbb4
params back to bottom
joshqsumner Oct 27, 2025
9af3baf
shuffling init
joshqsumner Oct 27, 2025
f1dbc4a
Merge branch 'main' into v5.0
joshqsumner Oct 27, 2025
e8228a4
Merge branch 'main' into v5.0
nfahlgren Oct 27, 2025
0c52263
Merge branch 'v5.0' into image-sharpening
joshqsumner Oct 27, 2025
26f8351
Merge branch 'v5.0' into parallel-verbosity
joshqsumner Oct 27, 2025
a7aa6a8
params verbosity default
joshqsumner Oct 27, 2025
7dca6a5
docs update
joshqsumner Oct 27, 2025
4fc053a
importing directly again
joshqsumner Oct 28, 2025
9c63d97
relative import
joshqsumner Oct 28, 2025
d2acd28
moving params import into function
joshqsumner Oct 28, 2025
1051b93
just going to try to change the whole thing I guess
joshqsumner Oct 28, 2025
f934a6f
making debug aware of params.verbose
joshqsumner Oct 28, 2025
c730d1e
only send deprecation warnings at most verbose level
joshqsumner Oct 28, 2025
8b8788a
deepsource
joshqsumner Oct 28, 2025
d3c792a
renaming points class for deepsource
joshqsumner Oct 28, 2025
d4e832f
deepsource
joshqsumner Oct 28, 2025
b592c6c
cyclic error
joshqsumner Oct 28, 2025
07ceed8
typo
joshqsumner Oct 28, 2025
9e179f3
testing more specific import in readimage
joshqsumner Oct 28, 2025
32085a8
test import change
joshqsumner Oct 28, 2025
3101c10
desperation? spelling?
joshqsumner Oct 28, 2025
3dc16b0
Merge branch 'v5.0' into image-sharpening
joshqsumner Oct 28, 2025
07a1288
Merge branch 'image-sharpening' into params-verbosity
joshqsumner Oct 28, 2025
81aed14
cyclic imports from touching plantcv.plantcv
joshqsumner Oct 28, 2025
a0f8698
Removed label param and warning
nfahlgren Oct 28, 2025
611aa38
covering line
joshqsumner Oct 28, 2025
3725eed
Updated docs for report_size_marker_area
nfahlgren Oct 28, 2025
89db595
Removed label param detect_color_card
JalissaPirro Oct 28, 2025
1f333c6
Removed label parameter from auto_correct_color function
Sam-Taylor-UIOWA Oct 28, 2025
4144cef
Removed find_color_card
marcusdgriff Oct 28, 2025
9a8e20b
Removed params import and blank lines following docstring for auto_co…
Sam-Taylor-UIOWA Oct 28, 2025
b2daa9e
Added documentation for auto_correct_color
Sam-Taylor-UIOWA Oct 28, 2025
27dff0b
Updated documentation to remove label for detect_color_card
JalissaPirro Oct 28, 2025
64b097c
Remove time_lapse_video function
nfahlgren Oct 29, 2025
b4605b9
Removed documentation for time_lapse_video
nfahlgren Oct 29, 2025
c32c8c7
Use opencv-python-headless instead of opencv-python
nfahlgren Oct 29, 2025
d17a6d1
Merge pull request #1834 from danforthcenter/remove-time-lapse-switch…
nfahlgren Oct 29, 2025
f7501e8
Search for headless builds
nfahlgren Oct 29, 2025
ccfd53d
Merge branch 'v5.0' into detect_color_card
nfahlgren Oct 29, 2025
0f271af
Added breaking change note
nfahlgren Oct 29, 2025
9367180
Merge pull request #1830 from danforthcenter/detect_color_card
nfahlgren Oct 29, 2025
eaf08fa
Merge branch 'v5.0' into auto_correct_color
nfahlgren Oct 29, 2025
9136141
Add update to breaking changes
nfahlgren Oct 29, 2025
76cf10d
Merge pull request #1831 from danforthcenter/auto_correct_color
nfahlgren Oct 29, 2025
0ee3674
Merge branch 'v5.0' into remove-label-find-color-card
nfahlgren Oct 29, 2025
30cf9d9
Add breaking change to log
nfahlgren Oct 29, 2025
e1ff5a3
Merge pull request #1832 from danforthcenter/remove-label-find-color-…
nfahlgren Oct 29, 2025
e74aab3
sample_images in parallel module
joshqsumner Oct 30, 2025
ba23d7e
Merge branch 'add-easy-metadata-terms' into jupyter-parallelization
joshqsumner Oct 30, 2025
a381dda
Merge branch 'jupyter-parallelization' into checkpointing
joshqsumner Oct 30, 2025
80fc6d6
Merge branch 'checkpointing' into parallel-verbosity
joshqsumner Oct 30, 2025
bc93500
Merge branch 'parallel-verbosity' into output-key-name
joshqsumner Oct 30, 2025
27292e0
Merge branch 'output-key-name' into remove-utils
joshqsumner Oct 30, 2025
e783e23
moving json2csv to parallel
joshqsumner Oct 30, 2025
1873a9e
making sample_images available on cli
joshqsumner Oct 30, 2025
110bfa7
mentioning that jupyterconfig class works too
joshqsumner Oct 30, 2025
e554283
deleting utils and its tests
joshqsumner Oct 30, 2025
41aff92
adding tabulation to learn
joshqsumner Oct 30, 2025
db77e7d
adding tests for functions moved to parallel
joshqsumner Oct 30, 2025
1566c61
udpating docs
joshqsumner Oct 30, 2025
7dfb72b
listing breaking change
joshqsumner Oct 30, 2025
b618f40
local testing fixes
joshqsumner Oct 30, 2025
1b9a71c
deepsource
joshqsumner Oct 30, 2025
5fbcc9c
Merge branch 'v5.0' into remove-utils
joshqsumner Oct 30, 2025
5845720
malia's feedback about guide rails on setting cores
joshqsumner Oct 31, 2025
892f812
deepsource
joshqsumner Oct 31, 2025
839aeb3
deepsource
joshqsumner Oct 31, 2025
405a620
whoops
joshqsumner Oct 31, 2025
a59d514
cli for inspect dataset
joshqsumner Oct 31, 2025
3d052ff
deepsource
joshqsumner Oct 31, 2025
16d26a3
Merge branch 'v5.0' into jupyter-parallelization
joshqsumner Oct 31, 2025
1989707
Merge branch 'v5.0' into checkpointing
joshqsumner Oct 31, 2025
e23d52a
Merge branch 'add-easy-metadata-terms' into jupyter-parallelization
joshqsumner Oct 31, 2025
5f78904
Merge branch 'jupyter-parallelization' into checkpointing
joshqsumner Oct 31, 2025
3abebfa
Merge branch 'checkpointing' into parallel-verbosity
joshqsumner Oct 31, 2025
2fcb57f
Merge branch 'parallel-verbosity' into output-key-name
joshqsumner Oct 31, 2025
5f5ed58
Merge branch 'output-key-name' into remove-utils
joshqsumner Oct 31, 2025
2c6bc0d
updating key name
joshqsumner Oct 31, 2025
d965f4d
Merge branch 'output-key-name' into remove-utils
joshqsumner Oct 31, 2025
4174323
moving params and output class definitions to globals module
joshqsumner Oct 31, 2025
49665c7
Delete time_lapse_video.py
joshqsumner Oct 31, 2025
187fc66
had to remove time lapse video for checks to run
joshqsumner Oct 31, 2025
f237c8c
renaming filepath to dir
joshqsumner Nov 5, 2025
082e571
fixing test
joshqsumner Nov 5, 2025
af7d8dc
linting
HaleySchuhl Nov 7, 2025
30d4f11
Merge branch 'main' into remove-label-report-size-marker
HaleySchuhl Nov 7, 2025
de4d142
remove whitespace after docstring, docstring to np style
HaleySchuhl Nov 7, 2025
a13afa8
one more case of whitespace
HaleySchuhl Nov 7, 2025
8ddb390
Merge branch 'v5.0' into fix-conda-environment
nfahlgren Nov 7, 2025
b2d050e
Merge pull request #1835 from danforthcenter/fix-conda-environment
nfahlgren Nov 7, 2025
f2864c2
Merge branch 'v5.0' into remove-label-report-size-marker
HaleySchuhl Nov 7, 2025
e0500a7
oops, add back in "mini" to color card detection doc pages
HaleySchuhl Nov 7, 2025
f7bed5f
Merge pull request #1829 from danforthcenter/remove-label-report-size…
nfahlgren Nov 7, 2025
c178f3b
fixing error message
joshqsumner Nov 13, 2025
28d9295
Merge branch 'v5.0' into astrobotany-color-cards
joshqsumner Nov 14, 2025
18db669
deepsource after merge conflicts
joshqsumner Nov 14, 2025
c8f45d2
Merge branch 'astrobotany-color-cards' of https://github.com/danforth…
joshqsumner Nov 14, 2025
671eb51
altair
joshqsumner Nov 14, 2025
56ed841
Merge branch 'main' into v5.0
nfahlgren Nov 14, 2025
7b55c84
Merge branch 'v5.0' into params-verbosity
joshqsumner Nov 14, 2025
7cdce8d
Merge branch 'main' into v5.0
nfahlgren Nov 15, 2025
c86e3ee
Merge branch 'v5.0' into add-higher-order-correct-color
nfahlgren Nov 15, 2025
d5dcfba
Reorder to keep auto color correction methods together
nfahlgren Nov 15, 2025
3b541b7
Keep text within page bound
nfahlgren Nov 15, 2025
3ccb041
Ensure supported cards match
nfahlgren Nov 15, 2025
1eb7483
Harmonize supported color cards
nfahlgren Nov 15, 2025
8361dc3
Merge pull request #1797 from danforthcenter/add-higher-order-correct…
nfahlgren Nov 15, 2025
bba381f
Merge branch 'v5.0' into jupyter-parallelization
HaleySchuhl Nov 17, 2025
d443e1b
import syntax matching in code example
HaleySchuhl Nov 18, 2025
b5a5cec
add new function parallel.run_parallel to updating.md
HaleySchuhl Nov 18, 2025
6f2277d
Merge branch 'jupyter-parallelization' into checkpointing
joshqsumner Nov 26, 2025
2386ec5
Merge branch 'checkpointing' into parallel-verbosity
joshqsumner Nov 26, 2025
2ec1705
Merge branch 'parallel-verbosity' into output-key-name
joshqsumner Nov 26, 2025
1d58639
Merge branch 'output-key-name' into remove-utils
joshqsumner Nov 26, 2025
8c37947
Merge branch 'remove-utils' into rename-filepath-to-dir
joshqsumner Nov 26, 2025
f8f8b08
Merge branch 'main' into v5.0
nfahlgren Dec 19, 2025
64f88d7
Merge branch 'v5.0' into jupyter-parallelization
nfahlgren Dec 19, 2025
698c36a
Add whitespace
nfahlgren Dec 19, 2025
33f8429
Merge pull request #1803 from danforthcenter/jupyter-parallelization
nfahlgren Dec 19, 2025
f0f2552
marking potential problem area
joshqsumner Dec 19, 2025
1b52e74
Merge branch 'v5.0' into checkpointing
joshqsumner Dec 19, 2025
32e308b
Merge branch 'checkpointing' into parallel-verbosity
joshqsumner Dec 19, 2025
82048c1
Merge branch 'parallel-verbosity' into output-key-name
joshqsumner Dec 19, 2025
2b9f5fb
Merge branch 'output-key-name' into remove-utils
joshqsumner Dec 19, 2025
cedafb7
Merge branch 'remove-utils' into rename-filepath-to-dir
joshqsumner Dec 19, 2025
e11f21a
Merge branch 'v5.0' into color-correction-scatterplot
nfahlgren Dec 23, 2025
c75e966
Fix under indentation
nfahlgren Dec 23, 2025
3d37855
Add default value to argument
nfahlgren Dec 23, 2025
bba27df
Add default value to argument
nfahlgren Dec 23, 2025
d2c7e2b
Update outputs
nfahlgren Dec 23, 2025
1cf0268
Add conditional for corrected_matrix
nfahlgren Dec 23, 2025
11dda4e
Merge branch 'v5.0' into astrobotany-color-cards
nfahlgren Jan 2, 2026
f8ff93f
Remove redundant if statement
nfahlgren Jan 2, 2026
e5982a3
Rename input to card_type
nfahlgren Jan 2, 2026
dd8affb
Fix indentation
nfahlgren Jan 2, 2026
993ff03
Add two lines between functions
nfahlgren Jan 2, 2026
35e8b57
Merge pull request #1819 from danforthcenter/astrobotany-color-cards
nfahlgren Jan 2, 2026
4e57aba
Merge branch 'main' into v5.0
nfahlgren Jan 5, 2026
f780924
Merge branch 'v5.0' into color-correction-scatterplot
nfahlgren Jan 5, 2026
f13ad8a
Merge pull request #1759 from danforthcenter/color-correction-scatter…
nfahlgren Jan 5, 2026
c934548
keep track of original tmp_dir for checkpointing
joshqsumner Jan 5, 2026
dbc9cf8
walk from original tmp_dir to find checkpointing status
joshqsumner Jan 5, 2026
68368ae
forcing attribute to exist in helper function
joshqsumner Jan 5, 2026
559a44a
deepsource
joshqsumner Jan 5, 2026
9515830
use chkpt_start_dir in processing results
joshqsumner Jan 5, 2026
0051c43
making expected results directory structure
joshqsumner Jan 5, 2026
a46c7a9
pointing into the checkpoint folder
joshqsumner Jan 5, 2026
0a6a438
stopping timestamp warnings
joshqsumner Jan 6, 2026
3795ec0
Add GFP/RFP support
marcusdgriff Jan 12, 2026
91d2e0b
Add APH support
marcusdgriff Jan 13, 2026
433d706
Merge branch 'main' into 1862-add-gfp-rfp-support
marcusdgriff Jan 13, 2026
ee8c61c
Added support for GFP, RFP, APH
marcusdgriff Jan 13, 2026
e6124c3
Update read_cropreporter.py
marcusdgriff Jan 14, 2026
e1a686a
Update read_cropreporter.py
marcusdgriff Jan 14, 2026
4382e3b
Update read_cropreporter.py
marcusdgriff Jan 14, 2026
5f37a49
Merge branch 'checkpointing' into parallel-verbosity
joshqsumner Jan 16, 2026
74b88e7
Merge branch 'parallel-verbosity' into output-key-name
joshqsumner Jan 16, 2026
f85c857
Merge branch 'output-key-name' into remove-utils
joshqsumner Jan 16, 2026
355a66d
Merge branch 'remove-utils' into rename-filepath-to-dir
joshqsumner Jan 16, 2026
73a965c
add _chkpt_start_dir to validated config attributes and hide it
joshqsumner Jan 16, 2026
6c56ebd
deepsource does not want me touching a hidden attribute directly
joshqsumner Jan 16, 2026
1f0fb8b
more deepsource preferences
joshqsumner Jan 16, 2026
da92da5
Merge branch 'parallel-verbosity' into output-key-name
joshqsumner Jan 16, 2026
e129fd5
Merge branch 'output-key-name' into remove-utils
joshqsumner Jan 16, 2026
9707e8e
Merge branch 'remove-utils' into rename-filepath-to-dir
joshqsumner Jan 16, 2026
b4d3a99
Merge branch 'main' into v5.0
nfahlgren Jan 16, 2026
e0a2326
Merge branch 'v5.0' into checkpointing
nfahlgren Jan 27, 2026
267782a
Update read_cropreporter.py
marcusdgriff Jan 28, 2026
004f6de
preventing warp-mirroring by finding new contours after rotating image
joshqsumner Jan 28, 2026
a9dd21b
Merge branch 'v5.0' into extra_debugging_detect_color_card
joshqsumner Jan 28, 2026
0d72abf
deepsource
joshqsumner Jan 28, 2026
8ab0820
account for new returns
joshqsumner Jan 28, 2026
ccc06f4
changes for aruco cc detection returning color matrix
joshqsumner Jan 28, 2026
829ab2b
deepsource
joshqsumner Jan 28, 2026
40cc9c8
Merge branch 'main' into v5.0
nfahlgren Jan 28, 2026
77f385a
deepsource
joshqsumner Jan 29, 2026
558e9d1
changing test to look at each channel of rgb image individually
joshqsumner Jan 29, 2026
bfd33db
Merge branch 'v5.0' into extra_debugging_detect_color_card
joshqsumner Jan 29, 2026
20e2ea0
Merge branch 'main' into add-gfp-rfp-support-
nfahlgren Jan 29, 2026
d9ec133
removing extra resort
joshqsumner Jan 29, 2026
1f44968
reorder box points if opencv shuffled them around
joshqsumner Jan 29, 2026
9506b32
deepsource
joshqsumner Jan 29, 2026
243c09c
Merge pull request #1871 from danforthcenter/boxpoints-bug
nfahlgren Jan 29, 2026
b03efc4
update for breaking cv2 change
joshqsumner Jan 30, 2026
c119b45
deepsource and yml
joshqsumner Jan 30, 2026
e8e4e51
Merge branch 'v5.0' into add-gfp-rfp-support-
nfahlgren Jan 30, 2026
89cafb2
Merge branch 'v5.0' into extra_debugging_detect_color_card
joshqsumner Jan 30, 2026
55916d3
comment about why we have this
joshqsumner Jan 30, 2026
5ea55b1
Merge branch 'extra_debugging_detect_color_card' of https://github.co…
joshqsumner Jan 30, 2026
692b6aa
Merge branch 'v5.0' into checkpointing
joshqsumner Jan 30, 2026
5373227
change simulated job data to match new parsers output
joshqsumner Jan 30, 2026
fa24b78
update function docstring and updating.md for new output type
k034b363 Jan 30, 2026
7a4bc20
trailing whitespace
k034b363 Jan 30, 2026
8e1bd67
Merge branch 'checkpointing' into parallel-verbosity
joshqsumner Jan 30, 2026
393a168
Merge branch 'parallel-verbosity' into remove-utils
joshqsumner Jan 30, 2026
23347df
Merge branch 'parallel-verbosity' into output-key-name
joshqsumner Jan 30, 2026
5ceb8df
Merge branch 'output-key-name' into remove-utils
joshqsumner Jan 30, 2026
d424abe
Merge branch 'remove-utils' into rename-filepath-to-dir
joshqsumner Jan 30, 2026
31f65fe
Merge pull request #1810 from danforthcenter/checkpointing
nfahlgren Jan 30, 2026
a7d0e04
Merge branch 'v5.0' into parallel-verbosity
nfahlgren Jan 30, 2026
6043cf8
Use sys.exit instead of raising ValueError
nfahlgren Jan 30, 2026
daa32f5
assert exit code instead of ValueError
nfahlgren Jan 30, 2026
286864c
Merge pull request #1813 from danforthcenter/parallel-verbosity
nfahlgren Jan 30, 2026
06c530f
Merge branch 'v5.0' into output-key-name
nfahlgren Jan 30, 2026
bf9116f
Fix merge conflict mistake
nfahlgren Jan 30, 2026
6fc49b7
Merge pull request #1821 from danforthcenter/output-key-name
nfahlgren Jan 30, 2026
df6ac38
Merge branch 'v5.0' into remove-utils
nfahlgren Jan 30, 2026
7121395
Use filename prefix for filenames and print statements
nfahlgren Jan 30, 2026
f8220b5
Remove utils script entrypoint
nfahlgren Jan 30, 2026
835a151
Merge branch 'v5.0' into extra_debugging_detect_color_card
k034b363 Feb 2, 2026
1fb6961
Add space after comma
nfahlgren Feb 4, 2026
812739f
Add space after comma
nfahlgren Feb 4, 2026
9c73c99
Merge pull request #1795 from danforthcenter/extra_debugging_detect_c…
nfahlgren Feb 4, 2026
64723ec
Merge branch 'v5.0' into remove-utils
joshqsumner Feb 4, 2026
5abaf47
Merge branch 'remove-utils' into rename-filepath-to-dir
joshqsumner Feb 4, 2026
63283d6
Merge branch 'v5.0' into params-verbosity
nfahlgren Feb 5, 2026
86c1c44
Merge branch 'v5.0' into image-sharpening
nfahlgren Feb 5, 2026
c3bc07d
Update docs/sharpen.md
joshqsumner Feb 5, 2026
1ea6789
copilot suggestions
joshqsumner Feb 6, 2026
5a425ef
read in as gray
joshqsumner Feb 6, 2026
9b3995c
Merge branch 'v5.0' into add-gfp-rfp-support-
nfahlgren Feb 6, 2026
9e02153
Fixed line too long
nfahlgren Feb 6, 2026
4df3040
Removed print statement
nfahlgren Feb 6, 2026
fc6340d
Convert docstrings to numpydoc style
nfahlgren Feb 6, 2026
f31f6d9
Added documentation for gfp rfp aph
marcusdgriff Feb 6, 2026
a3a0eab
Merge pull request #1865 from danforthcenter/add-gfp-rfp-support-
nfahlgren Feb 6, 2026
0294791
Merge branch 'v5.0' into image-sharpening
nfahlgren Feb 13, 2026
aa4e48a
Add output to function signature
nfahlgren Feb 13, 2026
90eed0a
Reformat docstrings to numpydoc style
nfahlgren Feb 13, 2026
125cc85
Remove spaces
nfahlgren Feb 13, 2026
db9d162
Merge pull request #1825 from danforthcenter/image-sharpening
nfahlgren Feb 13, 2026
94cacbc
Merge branch 'main' into v5.0
nfahlgren Feb 17, 2026
b04078c
Merge branch 'v5.0' into params-verbosity
nfahlgren Feb 17, 2026
10049ea
Fix verbosity in merge
nfahlgren Feb 17, 2026
c676625
Reformat docstring
nfahlgren Feb 17, 2026
c042cff
Reformat docstring
nfahlgren Feb 17, 2026
08221a3
Merge pull request #1827 from danforthcenter/params-verbosity
nfahlgren Feb 17, 2026
538c49a
Merge branch 'v5.0' into remove-utils
nfahlgren Feb 17, 2026
93599a2
Merge pull request #1839 from danforthcenter/remove-utils
nfahlgren Feb 17, 2026
25f1d51
Merge branch 'v5.0' into rename-filepath-to-dir
nfahlgren Feb 17, 2026
49b3f70
Merge pull request #1840 from danforthcenter/rename-filepath-to-dir
nfahlgren Feb 17, 2026
be3f345
Update quick_filter algorithm to improve performance
nfahlgren Feb 18, 2026
ef6476d
Import Objects from classes
nfahlgren Feb 18, 2026
aa1acf4
Deepsource ignore testdata
nfahlgren Feb 18, 2026
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
1 change: 1 addition & 0 deletions .deepsource.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ exclude_patterns = [
"setup.py",
"tests/conftest.py",
"tests/*/conftest.py",
"tests/testdata/*",
"versioneer.py"
]

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ name: builds
on:
push:
# Run when main is updated
branches: [ main ]
branches: [ main, v5.0 ]
pull_request:
# Run on pull requests against main
branches: [ main ]
branches: [ main, v5.0 ]

jobs:
build:
Expand Down
6 changes: 3 additions & 3 deletions docs/Points.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Using [Jupyter Notebooks](jupyter.md) it is possible to interactively click to collect coordinates from an image, which can be used in various downstream applications. Left click on the image to collect a point. Right click removes the
closest collected point.

**plantcv.Points**(*img, figsize=(12, 6)*)
**plantcv.Point**(*img, figsize=(12, 6)*)

**returns** interactive image class

Expand All @@ -25,8 +25,8 @@ closest collected point.
```python
from plantcv import plantcv as pcv

# Create an instance of the Points class
marker = pcv.Points(img=img, figsize=(12,6))
# Create an instance of the Point class
marker = pcv.Point(img=img, figsize=(12,6))

# Click on the plotted image to collect coordinates

Expand Down
48 changes: 48 additions & 0 deletions docs/astro_color_matrix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
## Astrobotany Calibration Sticker Color Matrix

Returns a color matrix with the standard *R*, *G*, *B* values compatible with Astrobotany Calibration Stickers.

Source: [https://astrobotany.com/product/airi-bio-imaging-spectrum-5cm/](https://astrobotany.com/product/airi-bio-imaging-spectrum-5cm/)

**plantcv.transform.astro_color_matrix**()

**returns** color_matrix

- **Context**
- A standard matrix can be used most readily while doing [affine](transform_affine_color_correction.md) color correction.

- **Returns**
- color_matrix - a *n* x 4 matrix containing the standard red, green, and blue
values for each color chip

- **Example use below:**

```python

from plantcv import plantcv as pcv

astro_color_matrix = pcv.transform.astro_color_matrix()

# use fixed point notation for printing the matrix
np.set_printoptions(precision=2, suppress=True)

print(astro_color_matrix)

[[ 10., 0.18, 0.23, 0.5 ],
[ 20., 0.34, 0.62, 0.25],
[ 30., 0.71, 0.25, 0.21],
[ 40., 0.89, 0.81, 0.2 ],
[ 50., 0.21, 0.22, 0.22],
[ 60., 0.91, 0.95, 0.93],
[ 70., 0.82, 0.86, 0.86],
[ 80., 0.72, 0.75, 0.73],
[ 90., 0.64, 0.67, 0.64],
[100., 0.57, 0.58, 0.56],
[110., 0.48, 0.49, 0.48],
[120., 0.39, 0.4 , 0.39],
[130., 0.33, 0.32, 0.32],
[140., 0.27, 0.28, 0.27],
[150., 0.22, 0.23, 0.23]]

```
**Source Code:** [Here](https://github.com/danforthcenter/plantcv/blob/master/plantcv/plantcv/transform/color_correction.py)
31 changes: 0 additions & 31 deletions docs/db-exporter.md

This file was deleted.

61 changes: 0 additions & 61 deletions docs/find_color_card.md

This file was deleted.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/documentation_images/sharpen/sharp1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/documentation_images/sharpen/sharp5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ Check out our tutorials in our [Tutorial Gallery](https://plantcv.org/tutorials)
* [Hyperspectral Image Processing](https://plantcv.org/tutorials/hyperspectral)
* [Machine Learning Tutorial](https://plantcv.org/tutorials/naive-bayes)
* [Parallel Image Processing](pipeline_parallel.md)
* [Exporting Data for Downstream Analysis](db-exporter.md)

## Contributing

Expand Down
14 changes: 14 additions & 0 deletions docs/json2csv.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## Converting JSON results to CSV

The `plantcv.parallel.json2csv` function is used to convert `PlantCV` results files from json into csv format.
Most of the time you will not need to call this function directly.

Parallel results from [`plantcv-run-workflow`](pipeline_parallel.md) automatically are converted from json into 2 CSV files, one for single-value traits (where each object is described by one quantity like area or height) and one for multi-value traits (where each object is described by several quantities like hue).

For other json results you can use this function to make tabular data:

```python
from plantcv import parallel as pcvpar
pcvpar.json2csv("your_file.json", "new_file.csv")

```
2 changes: 1 addition & 1 deletion docs/jupyter.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,5 +144,5 @@ pcv.outputs.save_results(filename=args.result, outformat="json")

In the case where creating a parallel workflow is not convenient (e.g. image sets where ROIs or other parameters must be adjusted between images), it is possible to run all images individually through Jupyter Notebook and then combine the JSON outputs into a larger JSON. The resulting file will look and function similarly to the result.json of a parallel workflow and can be used for downstream data analysis.

For all images whose data should be combined, the output JSONs should be moved to a new, separate folder. The files can then be combined using the process outlined on the [Process Results](parallel_process_results.md) page and plantcv-utils json2csv ([documentation](https://plantcv.readthedocs.io/en/stable/tools/#convert-output-json-data-files-to-csv-tables)).
For all images whose data should be combined, the output JSONs should be moved to a new, separate folder. The files can then be combined using the process outlined on the [Process Results](parallel_process_results.md) page and [`plantcv.parallel.json2csv`](json2csv.md).

5 changes: 2 additions & 3 deletions docs/output_measurements.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ Example (abbreviated) JSON data:
}
```

Data in this structure can be converted to tables for downstream analysis using the provided script
`plantcv-utils json2csv`, see [Accessory Tools](tools.md) for more details.
Data in this structure can be converted to tables for downstream analysis using the
[`plantcv.parallel.json2csv`](json2csv.md) function.

## Summary of Output Metadata

Expand Down Expand Up @@ -172,7 +172,6 @@ Functions that automatically store data to the [`Outputs` class](outputs.md) are
[morphology.segment_path_length](segment_pathlength.md),
[morphology.segment_tangent_angle](segment_tangent_angle.md),
[report_size_marker_area](report_size_marker.md),
[transform.find_color_card](find_color_card.md),
[transform.detect_color_card](transform_detect_color_card.md)
[watershed_segmentation](watershed.md),
[within_frame](within_frame.md), and
Expand Down
16 changes: 10 additions & 6 deletions docs/parallel_config.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Validate parameters/structure of configuration data.
* **input_dir**: (str, required): path/name of input images directory (validates that it exists).


* **json**: (str, required): path/name of output JSON data file (appends new data if it already exists).
* **results**: (str, required): path/name of output JSON data file (appends new data if it already exists).


* **filename_metadata**: (list, required): list of metadata terms used to construct filenames. for example:
Expand Down Expand Up @@ -92,9 +92,9 @@ extensions should be combined (if using phenofront data this must be length 1 an
`{"imgtype": "VIS", "frame": ["0", "90"]"}`).


* **metadata_regex**: (dict, default = `None`): a dictionary of filepath terms (keys) and values, any specified keys
* **metadata_regex**: (dict, default = `None`): a dictionary of metadata terms (keys) and values, any specified keys
will be used for regex based filtering (e.g.
`{"filepath1": "first[p|P]athPattern.*", "basename": "^starts_with.*"}`).
`{"dir1": "first[p|P]athPattern.*", "basename": "^starts_with.*"}`).


* **timestampformat**: (str, default = '%Y-%m-%dT%H:%M:%S.%fZ'): a date format code compatible with strptime C library.
Expand All @@ -118,7 +118,10 @@ metadata terms are listed [here](pipeline_parallel.md).
image group (created by `groupby`), or `"auto"` to generate a numbered image sequence `image1, image2, ...`. The resulting
names are used to access individual image filepaths in a workflow.

* **cleanup**: (bool, default =`True`): remove temporary job directory if `True`.
* **checkpoint**: (bool, default = `True`): restart from where a previous run left off and/or keep checkpointing files in
case jobs fail for any reason. For details see the checkpointing section of ['workflow_inputs'](parallel_workflow_inputs.md).

* **cleanup**: (bool, default =`True`): remove `config.tmp_dir` directory (including all temporary job directories and checkpoint files) after a complete run if `True`.


* **append**: (bool, default = `False`): if `False`, will delete previous results stored in the specified JSON file.
Expand All @@ -135,7 +138,8 @@ names are used to access individual image filepaths in a workflow.


* **metadata_terms**: (dict, default: as-is): a dictionary of metadata terms used to assign values in image filenames
(or metadata files) to metadata terms (should not be modified here). Terms from `filename_metadata` that are not present in the default dictionary of terms are added automatically.
(or metadata files) to metadata terms (should not be modified here). Terms from `filename_metadata`
that are not present in the default dictionary of terms are added automatically.


### Cluster configuration
Expand Down Expand Up @@ -202,7 +206,7 @@ config.import_config(config_file="my_config.json")

# Change configuration values directly in Python as needed. At a minimum you must specify input_dir, json, filename_metadata, workflow.
config.input_dir = "./my_images"
config.json = "output.json"
config.results = "output.json"
config.filename_metadata = ["plantbarcode", "timestamp"]
config.workflow = "my_workflow.py"

Expand Down
8 changes: 8 additions & 0 deletions docs/parallel_inspect_config.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,11 @@ config.input_dir = "./my_images"

summary, meta = pcvpar.inspect_dataset(config)
```

#### Command Line Interface

`plantcv.parallel.inspect_dataset` can also be run from the command line using `plantcv-run-workflow --dryrun configfile.json`. Used this way it will save the summary and metadata DataFrames to csv files named for your configuration file with `_summary_df.csv` and `_metadata_df.csv` replacing the `.json` extension.

```bash
plantcv-run-workflow --dryrun configfile.json
```
94 changes: 94 additions & 0 deletions docs/parallel_jupyterconfig.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
## Running in Parallel from a Jupyter notebook

The `jupyterconfig` class is very similar to the [`WorkflowConfig` class](parallel_config.md) and is used to configure a parallel workflow directly from a Jupyter notebook.

### Quick Start

Initializing a `jupyterconfig` object in a Jupyter notebook will immediately use `nbconvert` to create a python script version of the workflow. When the python script is generated notebook cells marked with `@ignore` as the start of a comment (`# @ignore`) are excluded, which may be useful to avoid making diagnostic plots in parallel or otherwise in keeping your notebook reproducible. Similar to `WorkflowConfig` objects you can overwrite default attributes to meet your particular needs. Once your edits are done the `run` method will run the workflow in parallel. Note that you will need to specify arguments with [`workflow_inputs`](parallel_workflow_inputs.md) how you would when using `WorkflowConfig` to run a script in parallel.

```python
from plantcv import parallel as pcvpar

jupcon = pcvpar.jupyterconfig()
jupcon.input_dir = "path/to/images"
# ... other edits
jupcon.run()

args = pcvpar.workflow_inputs()
```

*class* **plantcv.parallel.jupyterconfig**

### Class methods

Inspect the input dataset.

**jupyterconfig.inspect_dataset**()

- **Parameters:**
- None
- **Context:**
- Used to check which images will be found by the current configuration using [`inspect_dataset`](parallel_inspect_config.md).


Save a configuration file that can be modified and imported to run workflows in parallel.

**jupyterconfig.save_config**()

- **Parameters:**
- None
- **Context:**
- Used to create a configuration file that can be edited and imported. The configuration file is named by `jupyterconfig.config`, which defaults to the name of the notebook with the `.json` extension.


Run a parallel workflow from Jupyter.

**jupyterconfig.run**()

- **Parameters:**
- None
- **Context:**
- Used to run a parallel workflow, similar to the [`plantcv-run-workflow`](pipeline_parallel.md) utility.


There are additional methods (`find_notebook`, `nameScript`, `nameResults`, `notebook2script`, `nameConfig`, and `in_notebook`) which are used internally on initializing the `jupyterconfig` object to make and name the different files needed to run in parallel. These generally do not need to be interacted with directly and their generated values can be overwritten if desired.



### Attributes

* **notebook**: (str, default = `os.environ["JPY_SESSION_NAME"]`): Name of the Jupyter notebook file. This is used to name results, python script, and saved configuration json.

* **workflow**: (str, default = `self.nameScript()`): Name of the python workflow to run in parallel. Default is to name the python script with the same basename as the Jupyter notebook where this is initialized.

* **config**: (str, default = `self.nameConfig()`): Name of the configuration json file to save to run in parallel. Default is to name the json with the same basename as the Jupyter notebook where this is initialized.

* **analysis_script**: (bool, default = `self.notebook2script()`): True if the workflow file exists, false otherwise. Normally this should be True since `jupyterconfig.notebook2script()` writes the python script specified by `jupyterconfig.workflow`.

Additional attributes are the same as those in the [`WorkflowConfig` documentation](parallel_config.md).


### Example

```python
from plantcv import plantcv as pcv
from plantcv import parallel as pcvpar

jupcon = pcvpar.jupyterconfig()
jupcon.input_dir = "path/to/images"
jupcon.cluster_config["n_workers"] = 10
# ... other edits to defaults
jupcon.run()

# get arguments from plantcv.parallel.workflowinputs
args = pcvpar.workflow_inputs() # This is necessary for running the notebook in parallel
# read image
img, path, filename = pcv.readimage(filename=args.image1)
# other components of your workflow
# ...
# save results
pcv.outputs.save_results(filename= args.result, outformat="json")
```

**Source Code:** [Here](https://github.com/danforthcenter/plantcv/blob/main/plantcv/parallel/jupyterconfig.py)

Loading