Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor pipeline to use grain crop dictionaries #1022

Draft
wants to merge 85 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
58757ad
WIP: Scope out refactor for grains.py
SylviaWhittle Nov 18, 2024
f49b1e6
WIP: Begin grains > grainstats pipeline overhaul. Outline data struct…
SylviaWhittle Nov 19, 2024
4334027
WIP: Scope out changes to GrainStats.calculate_stats to allow for mul…
SylviaWhittle Nov 19, 2024
d106b0f
WIP: Initial proposal for grainstats using grain dictionary refactor
SylviaWhittle Nov 19, 2024
1acee67
Add function: graincrops_merge_classes
SylviaWhittle Nov 21, 2024
a7b9075
Add function: graincrops_update_background_class
SylviaWhittle Nov 21, 2024
913e3b5
Update: extract_grains_from_full_image now works in theory, untested
SylviaWhittle Nov 21, 2024
843a606
Fix: extract_grains_from_full_image_mask: allocating region to empty …
SylviaWhittle Nov 21, 2024
535bea8
WIP: Switch vetting, merging and update background to work on dicts o…
SylviaWhittle Nov 21, 2024
36c07e2
WIP: Update vet_grains to take / return dicts of GrainCrops
SylviaWhittle Nov 21, 2024
d1e4c1d
WIP: Update grainstats handling of dataframe to use list of dicts for…
SylviaWhittle Nov 21, 2024
ace46ea
Fix: validate_full_mask_tensor_shape: Require len(shape) == 3, shape[…
SylviaWhittle Nov 22, 2024
e2824f9
Edit: find_grains now stores grains in self.image_grain_crops: ImageG…
SylviaWhittle Nov 22, 2024
f21eccd
WIP: Handle ImageGrainCrops between run_grains and run_grainstats
SylviaWhittle Nov 22, 2024
63d0003
WIP: Graintstats handles ImageGrainCrops
SylviaWhittle Nov 22, 2024
02ecf43
Fix: grainstats: process scan no longer needing grain plots returned
SylviaWhittle Nov 22, 2024
651e89c
WIP: Begin grains > disordered_tracing pipeline overhaul
SylviaWhittle Nov 22, 2024
a0370cc
Merge branch 'main' into SylviaWhittle/grain_restructure
SylviaWhittle Nov 22, 2024
a03524e
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Nov 22, 2024
8d215fd
WIP: grains > disorderd_tracing pipeline | fix typing and remove whol…
SylviaWhittle Nov 26, 2024
3a18880
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Nov 26, 2024
7781c86
Add: class index to disordered tracing config
SylviaWhittle Dec 4, 2024
80b711c
[WIP] Fix: Attempt to fix grain_number double index issue
SylviaWhittle Dec 10, 2024
4c6f0f3
remove raising error on empty direction
SylviaWhittle Dec 11, 2024
e061001
Add padding to the grains section of config and remove from unet sect…
SylviaWhittle Dec 17, 2024
8855707
[WIP]: Attempt to fix data passing errors between processing and diso…
SylviaWhittle Dec 17, 2024
9f59678
Attempt merge with main (grains.py taken from branch, disorderd.py ta…
SylviaWhittle Dec 18, 2024
6547c59
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Dec 18, 2024
8030c8e
Add post init script to validate input data to GrainCrop dataclass
SylviaWhittle Dec 18, 2024
b2ec80d
Fix bug: wrong (old) graincrops returned from unet masking
SylviaWhittle Dec 18, 2024
be9f663
Fix bug: wrong bbox used in construction of GrainCrop dataclass causi…
SylviaWhittle Dec 18, 2024
fc938fb
Fix: padding wrongly subtracted in nodestats and ordered_tracing
SylviaWhittle Dec 18, 2024
ba08b36
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Dec 18, 2024
8da84e2
Add: image grain crops to topostats object and fix process scan both …
SylviaWhittle Dec 20, 2024
cec5301
Add more rigorous GrainCrop setters and getters
SylviaWhittle Dec 20, 2024
7f75723
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Dec 20, 2024
a4d430e
Add and Fix: Add filename and p2nm to GrainCrop dataclass and fix dat…
SylviaWhittle Jan 6, 2025
dda6807
Fix: GrainCropsDirection private name attribute
SylviaWhittle Jan 6, 2025
d4da1b9
Fix-test: Create a dummy_graincrops_dictionary fixture and use it in …
SylviaWhittle Jan 6, 2025
5fa8997
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Jan 6, 2025
19f2a7a
Fix-test: test_grainstats.py::test_no_grains badly constructed GrainS…
SylviaWhittle Jan 6, 2025
0f7a27e
Fix: Grainstats messy handling of pixel to nm scaling
SylviaWhittle Jan 8, 2025
30ad66e
Add: minicircle_small_graincrops fixture for use in tests requiring g…
SylviaWhittle Jan 8, 2025
de8bf64
Fix: grainstats_minicircle fixture so it now uses minicircle_small_gr…
SylviaWhittle Jan 8, 2025
4f0419b
Fix: Regtest was wrong before! Bad corrdinates! This is the actual co…
SylviaWhittle Jan 8, 2025
899025e
Fix: Tidy up grainstats interactions with other functions
SylviaWhittle Jan 8, 2025
e71fd06
Fix: construct_full_mask_from_crops incorrectly subtracting padding
SylviaWhittle Jan 8, 2025
e720d6b
Fix: Couple extra parts that erroneously passed p2nm to GrainStats co…
SylviaWhittle Jan 8, 2025
deb158a
Add: Allow construct_full_mask_from_graincrops to take any number of …
SylviaWhittle Jan 8, 2025
07aa8a6
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Jan 9, 2025
93763f6
Add: equality checks for Grains dataclasses
SylviaWhittle Jan 9, 2025
765ca50
Merge remote-tracking branch 'origin/SylviaWhittle/grain_restructure'…
SylviaWhittle Jan 9, 2025
18daaf2
Fix: make_bounding_box_square not taking exclusive maximum row/col in…
SylviaWhittle Jan 9, 2025
dcdb315
Edit: How construct_full_mask_from_graincrops determines the num of c…
SylviaWhittle Jan 9, 2025
a998b0a
Fix: Half of the traditional test_find_grains test
SylviaWhittle Jan 9, 2025
ac08760
Tidy up
SylviaWhittle Jan 9, 2025
a9db222
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Jan 10, 2025
68e0c77
Add: Debug functions for dataclasses to find differences
SylviaWhittle Jan 10, 2025
d086e4e
Fix: Bugs caused by bad argument passing in grains.py
SylviaWhittle Jan 10, 2025
5f26e27
Fix: Background not being updated duing construction of full mask fro…
SylviaWhittle Jan 10, 2025
f2113ae
Fix: When no grains, skip later grain finding stages
SylviaWhittle Jan 10, 2025
8cc434b
Add test: no grains found
SylviaWhittle Jan 10, 2025
09c383f
Fix test: test_find_grains_unet
SylviaWhittle Jan 10, 2025
2f30131
Merge remote-tracking branch 'origin/SylviaWhittle/grain_restructure'…
SylviaWhittle Jan 10, 2025
66087ed
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Jan 10, 2025
7924f6e
Fix: Wrong indentation in grains.py
SylviaWhittle Jan 10, 2025
55ee801
Merge remote-tracking branch 'origin/SylviaWhittle/grain_restructure'…
SylviaWhittle Jan 10, 2025
769e9bd
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Jan 10, 2025
d4fdfad
Fix test: test_improve_grain_segmentation_unet: regular
SylviaWhittle Jan 13, 2025
1e59825
Fix test: test_improve_grain_segmentation_unet: no grains
SylviaWhittle Jan 13, 2025
37cb0b8
Edit: improve_grain_segmentation_unet now skips empty predictions and…
SylviaWhittle Jan 13, 2025
75ac205
Fix: test_improve_grain_segmentation_unet : empty prediction test
SylviaWhittle Jan 13, 2025
cd7c7c1
WIP: Fix test_trace_image_disorderd (need still do diagnostic images)
SylviaWhittle Jan 13, 2025
b3caec6
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Jan 13, 2025
3a45550
Fix: Get process scan both test running but failing again, fixing IO …
SylviaWhittle Jan 13, 2025
628a956
Merge remote-tracking branch 'origin/SylviaWhittle/grain_restructure'…
SylviaWhittle Jan 13, 2025
234f6dd
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Jan 13, 2025
f056f3b
Fix: test_trace_image_disordered
SylviaWhittle Jan 13, 2025
5e0c41e
Merge remote-tracking branch 'origin/SylviaWhittle/grain_restructure'…
SylviaWhittle Jan 13, 2025
08a5385
Add update background class method to GrainCropsDirection
SylviaWhittle Jan 17, 2025
6c7f65e
Edit: Make the way plot images are generated in grains.find_grains mo…
SylviaWhittle Jan 17, 2025
bd34c54
Add unet tensor, vetted tensor, merged tensor to output plots
SylviaWhittle Jan 17, 2025
f4edd83
Fix: Tracing tests | verified with Max, produces correct catenane res…
SylviaWhittle Jan 17, 2025
83aaed2
WIP: Fix handling grains output plots
SylviaWhittle Jan 17, 2025
2ea83c4
[pre-commit.ci] Fixing issues with pre-commit
pre-commit-ci[bot] Jan 17, 2025
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
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
centre_x centre_y radius_min radius_max radius_mean radius_median height_min height_max height_median height_mean volume area area_cartesian_bbox smallest_bounding_width smallest_bounding_length smallest_bounding_area aspect_ratio threshold max_feret min_feret image
grain_number
0 7.500895e-08 4.775362e-08 4.044948e-09 2.542964e-08 1.600048e-08 1.647888e-08 1.006306e-09 2.696640e-09 1.597337e-09 1.596062e-09 1.084371e-24 6.794043e-16 1.319762e-15 2.053897e-08 5.037861e-08 1.034725e-15 0.407692 above 5.037861e-08 2.053897e-08 None
1 8.028649e-08 7.895237e-08 6.658610e-09 2.623645e-08 1.609777e-08 1.573693e-08 1.009513e-09 2.480685e-09 1.668932e-09 1.683197e-09 1.031843e-24 6.130257e-16 1.526707e-15 2.017441e-08 4.942135e-08 9.970467e-16 0.408213 above 4.987228e-08 2.017441e-08 None
2 4.001424e-08 7.585689e-08 9.745734e-09 2.369314e-08 1.746942e-08 1.818722e-08 1.006681e-09 2.139365e-09 1.646541e-09 1.598842e-09 1.123717e-24 7.028320e-16 1.546230e-15 3.359220e-08 4.149625e-08 1.393950e-15 0.809524 above 4.440534e-08 3.176819e-08 None
class_number subgrain_number centre_x centre_y radius_min radius_max radius_mean radius_median height_min height_max height_median height_mean volume area area_cartesian_bbox smallest_bounding_width smallest_bounding_length smallest_bounding_area aspect_ratio threshold max_feret min_feret image
grain_number
0 1 0 3.548872e-08 9.122587e-08 4.044948e-09 2.542964e-08 1.600048e-08 1.647888e-08 1.006306e-09 2.696640e-09 1.597337e-09 1.596062e-09 1.084371e-24 6.794043e-16 1.319762e-15 2.053897e-08 5.037861e-08 1.034725e-15 0.407692 above 5.037861e-08 2.053897e-08 None
1 1 0 7.238244e-08 1.224246e-07 6.658610e-09 2.623645e-08 1.609777e-08 1.573693e-08 1.009513e-09 2.480685e-09 1.668932e-09 1.683197e-09 1.031843e-24 6.130257e-16 1.526707e-15 2.017441e-08 4.942135e-08 9.970467e-16 0.408213 above 4.987228e-08 2.017441e-08 None
2 1 0 7.755846e-08 1.272332e-07 9.745734e-09 2.369314e-08 1.746942e-08 1.818722e-08 1.006681e-09 2.139365e-09 1.646541e-09 1.598842e-09 1.123717e-24 7.028320e-16 1.546230e-15 3.359220e-08 4.149625e-08 1.393950e-15 0.809524 above 4.440534e-08 3.176819e-08 None
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
image_size_x_m image_size_y_m image_area_m2 image_size_x_px image_size_y_px image_area_px2 grains_number_above grains_per_m2_above grains_number_below grains_per_m2_below rms_roughness
image
minicircle_small 1.2646e-07 1.2646e-07 1.5993e-14 64 64 4096 3 1.8758e+14 1 6.2526e+13 6.8208e-10
centre_x centre_y grain_number radius_min radius_max radius_mean radius_median height_min height_max height_median height_mean volume area area_cartesian_bbox smallest_bounding_width smallest_bounding_length smallest_bounding_area aspect_ratio threshold max_feret min_feret image grain_endpoints grain_junctions total_branch_lengths grain_width_mean total_contour_length average_end_to_end_distance
0 7.5100e-08 4.7559e-08 0 3.9431e-09 2.5631e-08 1.6016e-08 1.6680e-08 9.1991e-10 2.6422e-09 1.5338e-09 1.5341e-09 1.0543e-24 6.8721e-16 1.3198e-15 2.0539e-08 5.0379e-08 1.0347e-15 4.0769e-01 above 5.0379e-08 2.0539e-08 minicircle_small 1.0000e+00 1.0000e+00 8.4571e-08 8.2685e-09 6.5881e-08 8.8370e-09
1 8.0241e-08 7.8677e-08 1 6.8951e-09 2.7188e-08 1.6272e-08 1.6263e-08 9.0630e-10 2.4586e-09 1.6144e-09 1.6264e-09 1.0352e-24 6.3645e-16 1.5931e-15 2.0174e-08 5.1212e-08 1.0332e-15 3.9394e-01 above 5.1262e-08 2.0174e-08 minicircle_small 0.0000e+00 0.0000e+00 7.3054e-08 7.6154e-09 5.8272e-08 0.0000e+00
2 4.0012e-08 7.5644e-08 2 9.9461e-09 2.3654e-08 1.7561e-08 1.8364e-08 9.0641e-10 2.1066e-09 1.5939e-09 1.5493e-09 1.1192e-24 7.2236e-16 1.5462e-15 3.3592e-08 4.1496e-08 1.3940e-15 8.0952e-01 above 4.4405e-08 3.2528e-08 minicircle_small 0.0000e+00 0.0000e+00 1.0447e-07 7.8033e-09 8.7183e-08 0.0000e+00
3 3.2366e-08 1.4036e-08 0 7.7690e-10 1.2272e-08 6.4301e-09 6.4170e-09 -3.7937e-10 -2.1207e-10 -2.4477e-10 -2.6816e-10 -3.0364e-26 1.1323e-16 3.0066e-16 7.0841e-09 2.1505e-08 1.5234e-16 3.2941e-01 below 2.2092e-08 7.0841e-09 minicircle_small NaN NaN NaN NaN NaN NaN
class_number subgrain_number grain_number centre_x centre_y radius_min radius_max radius_mean radius_median height_min height_max height_median height_mean volume area area_cartesian_bbox smallest_bounding_width smallest_bounding_length smallest_bounding_area aspect_ratio threshold max_feret min_feret image grain_endpoints grain_junctions total_branch_lengths grain_width_mean total_contour_length average_end_to_end_distance
0 1 0 0 3.7555e-08 8.9055e-08 3.9431e-09 2.5631e-08 1.6016e-08 1.6680e-08 9.1991e-10 2.6422e-09 1.5338e-09 1.5341e-09 1.0543e-24 6.8721e-16 1.3198e-15 2.0539e-08 5.0379e-08 1.0347e-15 4.0769e-01 above 5.0379e-08 2.0539e-08 minicircle_small 1.0000e+00 1.0000e+00 8.5729e-08 9.5493e-09 6.7087e-08 9.4020e-09
1 1 0 1 7.4313e-08 8.8557e-08 6.8951e-09 2.7188e-08 1.6272e-08 1.6263e-08 9.0630e-10 2.4586e-09 1.6144e-09 1.6264e-09 1.0352e-24 6.3645e-16 1.5931e-15 2.0174e-08 5.1212e-08 1.0332e-15 3.9394e-01 above 5.1262e-08 2.0174e-08 minicircle_small 0.0000e+00 0.0000e+00 7.3054e-08 7.6878e-09 5.7989e-08 0.0000e+00
2 1 0 2 7.9532e-08 4.0076e-08 9.9461e-09 2.3654e-08 1.7561e-08 1.8364e-08 9.0641e-10 2.1066e-09 1.5939e-09 1.5493e-09 1.1192e-24 7.2236e-16 1.5462e-15 3.3592e-08 4.1496e-08 1.3940e-15 8.0952e-01 above 4.4405e-08 3.2528e-08 minicircle_small 0.0000e+00 0.0000e+00 1.0331e-07 7.8754e-09 8.5725e-08 0.0000e+00
3 1 0 0 2.0510e-08 2.9845e-08 7.7690e-10 1.2272e-08 6.4301e-09 6.4170e-09 -3.7937e-10 -2.1207e-10 -2.4477e-10 -2.6816e-10 -3.0364e-26 1.1323e-16 3.0066e-16 7.0841e-09 2.1505e-08 1.5234e-16 3.2941e-01 below 2.2092e-08 7.0841e-09 minicircle_small NaN NaN NaN NaN NaN NaN
81 changes: 69 additions & 12 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from __future__ import annotations

import importlib.resources as pkg_resources
import pickle
from pathlib import Path
from unittest.mock import MagicMock

Expand All @@ -16,7 +17,7 @@

import topostats
from topostats.filters import Filters
from topostats.grains import Grains
from topostats.grains import GrainCrop, Grains
from topostats.grainstats import GrainStats
from topostats.io import LoadScans, read_yaml
from topostats.plotting import TopoSum
Expand Down Expand Up @@ -325,6 +326,59 @@ def random_grains(grains_config: dict, random_filters: Filters) -> Grains:
return grains


@pytest.fixture()
def dummy_graincrop() -> GrainCrop:
"""Dummy GrainCrop object for testing."""
image = np.random.random((10, 10)).astype(np.float32)
mask = np.stack(
arrays=[
np.array(
[
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]
),
np.array(
[
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
]
),
],
axis=-1,
)
return GrainCrop(
image=image,
mask=mask,
padding=2,
bbox=(1, 1, 12, 12),
pixel_to_nm_scaling=1.0,
filename="dummy",
)


@pytest.fixture()
def dummy_graincrops_dict(dummy_graincrop: GrainCrop) -> dict[int, GrainCrop]:
"""Dummy dictionary of GrainCrop objects for testing."""
return {0: dummy_graincrop}


@pytest.fixture()
def small_array_filters(small_array: np.ndarray, load_scan: LoadScans, filter_config: dict) -> Grains:
"""Filters object based on small_array."""
Expand Down Expand Up @@ -588,6 +642,14 @@ def minicircle_grain_mask(minicircle_grain_threshold_abs: Grains) -> Grains:
return minicircle_grain_threshold_abs


@pytest.fixture()
def minicircle_small_graincrops() -> dict[int, GrainCrop]:
"""Dictionary of graincrops for the minicircle_small image."""
with open(RESOURCES / "minicircle_small_graincrops.pkl", "rb") as f:
graincrops = pickle.load(f)
return graincrops


@pytest.fixture()
def minicircle_grain_clear_border(minicircle_grain_mask: np.array) -> Grains:
"""Cleared borders."""
Expand Down Expand Up @@ -682,31 +744,26 @@ def minicircle_grain_coloured(minicircle_grain_labelled_post_removal: np.array)

# Derive fixture for grainstats
@pytest.fixture()
def grainstats(image_random: np.array, grainstats_config: dict, tmp_path) -> GrainStats:
def dummy_grainstats(
dummy_graincrops_dict: dict[int, GrainCrop], grainstats_config: dict, tmp_path: Path
) -> GrainStats:
"""Grainstats class for testing functions."""
return GrainStats(
image_random,
image_random,
pixel_to_nanometre_scaling=0.5,
grain_crops=dummy_graincrops_dict,
base_output_dir=tmp_path,
**grainstats_config,
)


# Minicircle
@pytest.fixture()
def minicircle_grainstats(
minicircle_grain_gaussian_filter: Filters,
minicircle_grain_labelled_post_removal: Grains,
load_scan: LoadScans,
minicircle_small_graincrops: dict[int, GrainCrop],
grainstats_config: dict,
tmp_path: Path,
) -> GrainStats:
"""GrainStats object."""
return GrainStats(
data=minicircle_grain_gaussian_filter.images["gaussian_filtered"],
labelled_data=minicircle_grain_labelled_post_removal.directions["above"]["labelled_regions_02"],
pixel_to_nanometre_scaling=load_scan.pixel_to_nm_scaling,
grain_crops=minicircle_small_graincrops,
base_output_dir=tmp_path,
plot_opts={
"grain_image": {"core_set": True},
Expand Down
Binary file added tests/resources/example_catenanes_graincrops.pkl
Binary file not shown.
Binary file added tests/resources/example_rep_int_graincrops.pkl
Binary file not shown.
Binary file not shown.
Binary file modified tests/resources/process_scan_topostats_file_regtest.topostats
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified tests/resources/tracing/nodestats/catenanes_nodestats_data.pkl
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
,image,grain_number,num_crossings,avg_crossing_confidence,min_crossing_confidence
grain_0,test_image,0,4,0.4013589828832889,0.2129989376767838
grain_1,test_image,1,4,0.3441057054647598,0.17063184531586506
grain_0,test_image,0,4,0.21426594097881008,0.001258249874731443
grain_1,test_image,1,4,0.21633024904748463,0.1026576999771045
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
,image,grain_number,num_mols,writhe_string
grain_0,catenane,0,2,++++
grain_1,catenane,1,2,+-++
grain_1,catenane,1,2,++++
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
,image,grain_number,molecule_number,circular,topology,topology_flip,processing
0,catenane,0,0,True,L4a1,L2a1,nodestats
1,catenane,0,1,True,L4a1,L2a1,nodestats
2,catenane,1,0,True,L2a1,0_1U0_1,nodestats
3,catenane,1,1,True,L2a1,0_1U0_1,nodestats
0,catenane,0,0,True,4^2_1,2^2_1,nodestats
1,catenane,0,1,True,4^2_1,2^2_1,nodestats
2,catenane,1,0,True,4^2_1,2^2_1,nodestats
3,catenane,1,1,True,4^2_1,2^2_1,nodestats
Binary file not shown.
Loading
Loading