AFM-SPM / TopoStats

An AFM image analysis program to batch process data and obtain statistics from images
https://afm-spm.github.io/TopoStats/
GNU Lesser General Public License v3.0
60 stars 11 forks source link

[Bug]: docs/data_dictionary.md does not reflect current output #1001

Open ns-rse opened 1 week ago

ns-rse commented 1 week ago

Checklist

Describe the bug

Recent changes have updated the output files that are generated.

We have overlooked updating docs/data_dictionary.md to keep track of these.

This means users who will naturally turn to the documentation to understand the fields that are output do not have an accurate reference.

Copy of the output

❱ cat output/all_statistics.csv
image,threshold,grain_number,index,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,max_feret,min_feret,basename,grain_endpoints,grain_junctions,total_branch_lengths,grain_width_mean,num_crossings,avg_crossing_confidence,min_crossing_confidence,num_mols,writhe_string,total_contour_length,average_end_to_end_distance
minicircle,above,0,0,1.873902655480112e-08,9.654458250850615e-08,5.015175777645808e-09,2.1033893816033894e-08,1.529741801697073e-08,1.592692437155615e-08,7.862352616330326e-10,3.930998867825114e-09,2.1028502039163425e-09,2.008218415963084e-09,1.2805879300169708e-24,6.376736314325839e-16,1.1374652874501621e-15,2.4057486200571087e-08,4.124140491526472e-08,9.921645296411455e-16,0.5833333333333333,4.138435648745246e-08,2.404835104742524e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,4,1.0821925428089535e-07,5.628864930151011e-09,1,0.25677143768864297,0.25677143768864297,1,-,8.703853468439935e-08,0.0
minicircle,above,1,1,4.0025845231771836e-07,9.313249223038448e-08,1.152687339284025e-09,2.1935674840652947e-08,1.3838967462498162e-08,1.4774747990988095e-08,7.85651492206643e-10,3.2035937909217826e-09,2.178474185014681e-09,2.0294744369087664e-09,1.2857227322158504e-24,6.335249702254067e-16,1.1860290274635888e-15,2.7927824820472407e-08,3.962207412596327e-08,1.1065583452136745e-15,0.7048551959114139,3.967123430002378e-08,2.7927824820472407e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,2,9.534007040175234e-08,6.699703757968162e-09,1,0.7043949611841239,0.7043949611841239,1,+,7.58946870017244e-08,0.0
minicircle,above,2,2,2.17797979933548e-07,1.731675168148041e-07,7.85003240524664e-09,2.886060683198909e-08,1.778908253754576e-08,1.6416400304672386e-08,7.851755351558812e-10,3.1376163600435263e-09,2.0176638728356784e-09,1.904675010839777e-09,1.1899258473036381e-24,6.247395700219728e-16,1.5928418646614906e-15,2.4168203896509512e-08,5.4580824110777465e-08,1.3191204859487921e-15,0.4427966101694915,5.469841722626308e-08,2.4168203896509512e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,0,1.0401295833430418e-07,4.701453553826916e-09,0,,,1,,8.383736589630271e-08,0.0
minicircle,above,3,3,3.5513386989694805e-07,2.059210975540651e-07,3.867794830781749e-09,2.5952607240531064e-08,1.6093056367620672e-08,1.7217379228482803e-08,7.860012666672222e-10,3.120365394813221e-09,2.1439415758412857e-09,2.0179535866757196e-09,1.2424744670506605e-24,6.157101309239989e-16,1.6965583948409197e-15,1.819343878272111e-08,4.950879522928414e-08,9.007352352102559e-16,0.3674789236632405,4.968107667287286e-08,1.8193438782721114e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,1,3,6.428207771569634e-08,7.951536958101926e-09,1,,,2,,4.7604273871779595e-08,1.2016260475127993e-08
minicircle,above,4,4,3.014010741411664e-07,2.116092779386674e-07,9.558785854530993e-09,2.528147006996619e-08,1.787277383706142e-08,1.8432964107205266e-08,7.852265851932546e-10,3.0095954474547523e-09,1.924296332587428e-09,1.8667868009525015e-09,1.3475718810736676e-24,7.218670500488263e-16,1.7395092402799303e-15,3.332043828809002e-08,4.395027136159113e-08,1.4644423046487072e-15,0.758139534883721,4.418496527461196e-08,3.332043828809002e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,2,1.158193788510419e-07,5.245033404688616e-09,1,,,1,,8.91466637223293e-08,0.0
minicircle,above,5,5,4.324963368034499e-07,2.1579495739712254e-07,2.3987788738628296e-09,2.3565878018607707e-08,1.5055811718072696e-08,1.59080126337577e-08,7.848617853674209e-10,3.2449624774815765e-09,2.1994636216434947e-09,2.04985099980506e-09,1.263114514208591e-24,6.161982087130786e-16,1.2592406958255388e-15,2.065822918755863e-08,4.594860844164164e-08,9.492168840368241e-16,0.4495942290351668,4.620710214165134e-08,2.065822918755863e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,2,6.80645861471358e-08,6.785412952997031e-09,2,,,2,,4.7835490722449854e-08,8.70471207181578e-09
minicircle,above,6,6,1.9441835654539288e-07,2.3124592459690824e-07,8.966634089367256e-09,2.390062265255098e-08,1.7962082526471252e-08,1.8322164988800706e-08,7.852556584825488e-10,2.931467460657938e-09,2.0740741979279243e-09,1.9476253043684e-09,1.340335640041554e-24,6.881896826023294e-16,1.5594085361095336e-15,2.974231168947983e-08,4.527651269927184e-08,1.3466281529144349e-15,0.6569037656903766,4.614368163530132e-08,2.974231168947983e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,0,1.0784511656150589e-07,5.668601641588497e-09,0,,,1,,8.975876174827458e-08,0.0
minicircle,above,7,7,3.8973042996637264e-07,2.7438383126003e-07,1.607555132032688e-09,2.554729378537534e-08,1.6530098489751808e-08,1.80659428309693e-08,7.898063064443229e-10,3.0535060776091284e-09,2.2270604482241033e-09,2.0530188716103057e-09,1.4439294258957144e-24,7.033200940637989e-16,1.7702581409919492e-15,2.2411993402563595e-08,4.910627840168845e-08,1.1005695875630926e-15,0.45639771801140994,4.9222130642541906e-08,2.24119934025636e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,4,1.1196665500506672e-07,6.11692023554189e-09,1,0.036791687931804984,0.036791687931804984,1,+,9.433587483020484e-08,0.0
minicircle,above,8,8,4.3038079258296093e-07,2.959329479368764e-07,2.3659079595227298e-09,2.2300543686709614e-08,1.526358216680752e-08,1.6587497187668204e-08,7.866535452807748e-10,4.414037249532471e-09,2.218955204393576e-09,2.1009240131668896e-09,1.3873856119927938e-24,6.603692486247884e-16,1.4207944440109084e-15,2.6893148483712474e-08,4.1724105928624634e-08,1.1220925760886503e-15,0.6445470282746683,4.3542372141168e-08,2.606386007178329e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,2,1.1533991800984888e-07,5.768834198637469e-09,1,0.4914520743283177,0.4914520743283177,1,-,9.13877923285238e-08,0.0
minicircle,above,9,9,1.2272394336282575e-07,3.088267170111667e-07,8.469837943475057e-09,2.743921249898132e-08,1.764492015080279e-08,1.7280734598389776e-08,7.860253625892728e-10,3.059123221471519e-09,2.265092626318945e-09,2.0699362141502686e-09,1.4295601956778322e-24,6.906300715477277e-16,1.7063199506225131e-15,2.555373243946123e-08,5.220711320111239e-08,1.3340866021778903e-15,0.489468405215647,5.2469064879258685e-08,2.555373243946123e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,1,3,9.859346819623607e-08,5.747706312889201e-09,1,,,2,,8.156393109631834e-08,6.920650682174711e-09
minicircle,above,10,10,3.888888777365213e-08,3.8238631536351017e-07,1.68537511758912e-09,2.7739518730868457e-08,1.6630093378473916e-08,1.69579222299307e-08,7.849540190767855e-10,2.9678170352585005e-09,2.2101129479405064e-09,2.0386159167009454e-09,1.3581792989392099e-24,6.662261820937444e-16,1.2348368063715555e-15,1.9525546383739614e-08,5.4568520566528295e-08,1.0654801794137973e-15,0.3578170377541142,5.457558710502951e-08,1.9525546383739614e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,4,1.0903774513420975e-07,5.973273087189137e-09,1,0.6247707922941812,0.6247707922941812,1,+,9.363258722204231e-08,0.0
minicircle,above,11,11,3.897273871275687e-07,3.775506514376611e-07,9.040455045356708e-09,2.6962723009746278e-08,1.7418841483648902e-08,1.677700614855515e-08,7.8492201025766e-10,3.04490770102406e-09,2.1961659108581755e-09,2.023707914257757e-09,1.3413331091971022e-24,6.628096375701867e-16,1.4642333672389986e-15,2.8376784094522085e-08,4.8509766932365204e-08,1.3765511827153145e-15,0.5849705304518664,4.9028390869141896e-08,2.837678409452208e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,1,3,1.0336398248705047e-07,5.921728045655888e-09,1,,,2,,8.60109404606061e-08,4.869688965022778e-09
minicircle,above,12,12,2.612063530282031e-07,3.747969450165408e-07,5.284143673829267e-09,2.545378074850627e-08,1.73929568196978e-08,1.8370587826339185e-08,7.874980733459206e-10,2.937550725871483e-09,2.1013910934950143e-09,1.956002366391767e-09,1.3561248014559977e-24,6.9331449938766585e-16,1.4525195003010866e-15,2.5560895466037315e-08,5.001954268566382e-08,1.2785443018472443e-15,0.511018175969117,5.018690497077517e-08,2.5560895466037312e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,0,1.1271493044384476e-07,5.367250260473566e-09,0,,,1,,9.227292569404399e-08,0.0
minicircle,above,13,13,3.04680683783211e-07,3.9110394238923494e-07,1.0924475045917678e-08,2.6684276473124832e-08,1.8302708769352407e-08,1.85302808993231e-08,7.864589499025619e-10,3.0830581939582936e-09,2.047868629710528e-09,1.927934018857199e-09,1.287733556918834e-24,6.679344543555232e-16,1.665565455234361e-15,3.5355574039500156e-08,4.2043996287071034e-08,1.4864896236440095e-15,0.8409184940008274,4.9045809030733045e-08,3.313362529850038e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,0,1.125454154377842e-07,5.1138172877297335e-09,0,,,1,,9.199146162200541e-08,0.0
minicircle,above,14,14,4.555114055331227e-07,4.2804021714690135e-07,3.9784342921592414e-09,2.6805010664741998e-08,1.654941555843728e-08,1.6554885405773967e-08,7.857227508369973e-10,3.990292541507313e-09,2.206536677164946e-09,2.0607298385425837e-09,1.3427382787542926e-24,6.515838484213544e-16,1.3197623416714173e-15,2.1883732803836295e-08,5.1739892025120864e-08,1.1322619723770854e-15,0.4229566770879858,5.174076413334045e-08,2.1883732803836292e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,3,1.1634246595771811e-07,5.239763665876708e-09,1,0.5277584245490158,0.5277584245490158,1,-,9.390503038398319e-08,0.0
minicircle,above,15,15,2.2046003471235796e-07,4.181592064638252e-07,3.932533808311742e-09,2.7487313639526803e-08,1.684301009429051e-08,1.6185000847345753e-08,7.850417982141843e-10,3.2018604834413592e-09,2.12588115473589e-09,1.983791477618468e-09,1.373939028356979e-24,6.925823827040463e-16,1.5301238687647535e-15,2.5354733955967193e-08,5.1266575674262755e-08,1.2998503870543917e-15,0.49456655964435664,5.1483069387878645e-08,2.5354733955967193e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,4,1.177602828625241e-07,5.298761098414465e-09,1,0.9656916340950673,0.9656916340950673,1,-,8.222969047661288e-08,0.0
minicircle,above,16,16,3.7609419554528524e-07,4.2810861550824004e-07,7.87240261408472e-09,2.4912423153375976e-08,1.8671142938400315e-08,1.9268223942456237e-08,7.880415441851917e-10,3.09633537968578e-09,2.1296001601179573e-09,1.977045417357183e-09,1.4107597599845459e-24,7.13569727634472e-16,1.5301238687647535e-15,3.161664425112969e-08,4.678904239152036e-08,1.4793125081437256e-15,0.675727534377998,4.805051489049166e-08,3.161664425112969e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,0,1.169768997164775e-07,5.204718464422281e-09,0,,,1,,9.805659339106248e-08,0.0
minicircle,above,17,17,4.608597895618402e-07,4.5869262431022076e-07,7.996801283268346e-09,2.7784117555733463e-08,1.729670843087945e-08,1.682793684241272e-08,7.866559444443823e-10,3.1378840928366333e-09,2.1743848791413757e-09,2.010540772717924e-09,1.278143634501501e-24,6.357213202762653e-16,1.6165136374318545e-15,2.1338952314842346e-08,5.2708195579518426e-08,1.1247376720727277e-15,0.4048507462686567,5.325388242604853e-08,2.133895231484235e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,1,1,9.332895097573416e-08,6.07850545719467e-09,1,,,1,,8.002936317945219e-08,7.540627455840867e-09
minicircle,above,18,18,4.198166528458832e-07,4.5633923540073695e-07,9.982818463005248e-09,2.4823406374920447e-08,1.8190739964843213e-08,1.8828731217324662e-08,7.851908554885605e-10,3.060816568640245e-09,2.162497069396001e-09,2.0031902475583147e-09,1.3785748606592382e-24,6.881896826023294e-16,1.6033355371267035e-15,3.682725956486612e-08,4.142320605837452e-08,1.525503161520693e-15,0.8890489913544671,4.596616961337844e-08,3.3483514135789765e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,0,1.0953174806389694e-07,5.044379721116057e-09,0,,,1,,9.103923022991354e-08,0.0
minicircle,above,19,19,9.100480878235194e-08,4.6899691231139806e-07,4.4867716508176746e-09,2.5409675604601516e-08,1.627911648258543e-08,1.67833304255931e-08,7.853484623182037e-10,3.0233031889878995e-09,2.1825831105215938e-09,2.02819554479272e-09,1.36856052529996e-24,6.747675434026385e-16,1.6001630314976856e-15,2.0999680248681832e-08,4.8766598496577605e-08,1.024082975243978e-15,0.4306160547604232,4.8916268878186765e-08,2.0999680248681832e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,4,1.1099921476446551e-07,6.300922969590134e-09,1,0.5194204819114308,0.5194204819114308,1,+,8.872447762575397e-08,0.0
minicircle,above,20,20,2.0321396780763618e-08,5.007542389868829e-07,1.5580185981218952e-09,2.5374119854943316e-08,1.581556213594614e-08,1.6252520359838892e-08,7.880109011722401e-10,3.0836927366302754e-09,2.2239616683582157e-09,2.0565196381892014e-09,1.2898079022950958e-24,6.271799589673711e-16,1.3910216988770486e-15,2.0354240787340277e-08,5.0204346641452024e-08,1.0218713601112126e-15,0.4054278593187482,5.0208781907117365e-08,2.035424078734028e-08,/home/neil/work/git/hub/AFM-SPM/TopoStats/tests/resources,0,2,1.0496585648641144e-07,6.002538727997858e-09,1,0.30129691705579853,0.30129691705579853,1,-,8.834261592913754e-08,0.0

The key though is the header which contains the following fields, not all of which are documented in docs/data_dictionary.md

NB - Output generated using ns-rse/999-split-and-update-tests which is a fork from tcatley/dna-width and therefore includes the column grain_width_mean.

image
threshold
grain_number
index
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
max_feret
min_feret
basename
grain_endpoints
grain_junctions
total_branch_lengths
grain_width_mean
num_crossings
avg_crossing_confidence
min_crossing_confidence
num_mols
writhe_string
total_contour_length
average_end_to_end_distance

The current fields in docs/data_dictionary.md are below << denotes something that is missing...

image
threshold
molecule_number  << grain_number
                 << index
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
max_feret
min_feret
contour_length   << renamed total_branch_lengths?
circular         << missing?
end_to_end_distance << renamed to average_end_to_end_distance
basename
                 << grain_endpoints
                 << grain_junctions
                 << total_branch_lengths
                 << grain_width_mean
                 << num_crossings
                 << avg_crossing_confidence
                 << min_crossing_confidence
                 << num_mols
                 << writhe_string
                 << total_contour_length
                 << average_end_to_end_distance

Include the configuration file

# Config file generated 2024-11-18 15:41:16
# # For more information on configuration and how to use it:
# https://afm-spm.github.io/TopoStats/main/configuration.html
base_dir: ./ # Directory in which to search for data files
output_dir: ./output # Directory to output results to
log_level: info # Verbosity of output. Options: warning, error, info, debug
cores: 2 # Number of CPU cores to utilise for processing multiple files simultaneously.
file_ext: .spm # File extension of the data files.
loading:
  channel: Height # Channel to pull data from in the data files.
filter:
  run: true # Options : true, false
  row_alignment_quantile: 0.5 # lower values may improve flattening of larger features
  threshold_method: std_dev # Options : otsu, std_dev, absolute
  otsu_threshold_multiplier: 1.0
  threshold_std_dev:
    below: 10.0 # Threshold for data below the image background
    above: 1.0 # Threshold for data above the image background
  threshold_absolute:
    below: -1.0 # Threshold for data below the image background
    above: 1.0 # Threshold for data above the image background
  gaussian_size: 1.0121397464510862 # Gaussian blur intensity in px
  gaussian_mode: nearest # Mode for Gaussian blurring. Options : nearest, reflect, constant, mirror, wrap
  # Scar remvoal parameters. Be careful with editing these as making the algorithm too sensitive may
  # result in ruining legitimate data.
  remove_scars:
    run: false
    removal_iterations: 2 # Number of times to run scar removal.
    threshold_low: 0.250 # lower values make scar removal more sensitive
    threshold_high: 0.666 # lower values make scar removal more sensitive
    max_scar_width: 4 # Maximum thickness of scars in pixels.
    min_scar_length: 16 # Minimum length of scars in pixels.
grains:
  run: true # Options : true, false
  # Thresholding by height
  threshold_method: std_dev # Options : std_dev, otsu, absolute, unet
  otsu_threshold_multiplier: 1.0
  threshold_std_dev:
    below: 10.0 # Threshold for grains below the image background
    above: 1.0 # Threshold for grains above the image background
  threshold_absolute:
    below: -1.0 # Threshold for grains below the image background
    above: 1.0 # Threshold for grains above the image background
  direction: above # Options: above, below, both (defines whether to look for grains above or below thresholds or both)
  # Thresholding by area
  smallest_grain_size_nm2: 50 # Size in nm^2 of tiny grains/blobs (noise) to remove, must be > 0.0
  absolute_area_threshold:
    above: [300, 3000] # above surface [Low, High] in nm^2 (also takes null)
    below: [null, null] # below surface [Low, High] in nm^2 (also takes null)
  remove_edge_intersecting_grains: true # Whether or not to remove grains that touch the image border
  unet_config:
    model_path: null # Path to a trained U-Net model
    grain_crop_padding: 2 # Padding to apply to the grain crop bounding box
    upper_norm_bound: 5.0 # Upper bound for normalisation of input data. This should be slightly higher than the maximum desired / expected height of grains.
    lower_norm_bound: -1.0 # Lower bound for normalisation of input data. This should be slightly lower than the minimum desired / expected height of the background.
grainstats:
  run: true # Options : true, false
  edge_detection_method: binary_erosion # Options: canny, binary erosion. Do not change this unless you are sure of what this will do.
  cropped_size: -1 # Length (in nm) of square cropped images (can take -1 for grain-sized box)
  extract_height_profile: true # Extract height profiles along maximum feret of molecules
disordered_tracing:
  run: true # Options : true, false
  min_skeleton_size: 10 # Minimum number of pixels in a skeleton for it to be retained.
  pad_width: 1 # Pixels to pad grains by when tracing
  mask_smoothing_params:
    gaussian_sigma: 2 # Gaussian smoothing parameter 'sigma' in pixels.
    dilation_iterations: 2 # Number of dilation iterations to use for grain smoothing.
    holearea_min_max: [0, null] # Range (min, max) of a hole area in nm to refill in the smoothed masks.
  skeletonisation_params:
    method: topostats # Options : zhang | lee | thin | topostats
    height_bias: 0.6 # Percentage of lowest pixels to remove each skeletonisation iteration. 1 equates to zhang.
  pruning_params:
    method: topostats # Method to clean branches of the skeleton. Options : topostats
    max_length: 10.0 # Maximum length in nm to remove a branch containing an endpoint.
    height_threshold: # The height to remove branches below.
    method_values: mid # The method to obtain a branch's height for pruning. Options : min | median | mid.
    method_outlier: mean_abs # The method to prune branches based on height. Options : abs | mean_abs | iqr.
nodestats:
  run: true # Options : true, false
  node_joining_length: 7.0 # The distance in nanometres over which to join nearby crossing points.
  node_extend_dist: 14.0 # The distance in nanometres over which to join nearby odd-branched nodes.
  branch_pairing_length: 20.0 # The length in nanometres from the crossing point to pair and trace, obtaining FWHM's.
  pair_odd_branches: false # Whether to try and pair odd-branched nodes. Options: true and false.
  pad_width: 1 # Pixels to pad grains by when tracing (should be the same as disordered_tracing).
ordered_tracing:
  run: true
  ordering_method: nodestats # The method of ordering the disordered traces.
  pad_width: 1 # Pixels to pad grains by when tracing (should be the same as disordered_tracing).
splining:
  run: true # Options : true, false
  method: "rolling_window" # Options : "spline", "rolling_window"
  rolling_window_size: 20.0e-9 # size in nm of the rolling window.
  spline_step_size: 7.0e-9 # The sampling rate of the spline in metres.
  spline_linear_smoothing: 5.0 # The amount of smoothing to apply to linear features.
  spline_circular_smoothing: 5.0 # The amount of smoothing to apply to circular features.
  spline_degree: 3 # The polynomial degree of the spline.
plotting:
  run: true # Options : true, false
  style: topostats.mplstyle # Options : topostats.mplstyle or path to a matplotlibrc params file
  savefig_format: null # Options : null, png, svg or pdf. tif is also available although no metadata will be saved. (defaults to png) See https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.savefig.html
  savefig_dpi: 100 # Options : null (defaults to the value in topostats/plotting_dictionary.yaml), see https://afm-spm.github.io/TopoStats/main/configuration.html#further-customisation and https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.savefig.html
  pixel_interpolation: null # Options : https://matplotlib.org/stable/gallery/images_contours_and_fields/interpolation_methods.html
  image_set: core # Options : all, core
  zrange: [null, null] # low and high height range for core images (can take [null, null]). low <= high
  colorbar: true # Options : true, false
  axes: true # Options : true, false (due to off being a bool when parsed)
  num_ticks: [null, null] # Number of ticks to have along the x and y axes. Options : null (auto) or integer > 1
  cmap: null # Colormap/colourmap to use (default is 'nanoscope' which is used if null, other options are 'afmhot', 'viridis' etc.)
  mask_cmap: blue_purple_green # Options : blu, jet_r and any in matplotlib
  histogram_log_axis: false # Options : true, false
summary_stats:
  run: true # Whether to make summary plots for output data
  config: null

To Reproduce

Run topostats process and compare output/all_statistics.csvto the first table indocs/data_dictionary.md`.

TopoStats Version

2.1.2

Python Version

3.11

Operating System

GNU/Linux

Python Packages

❱ pip freeze
absl-py==2.1.0
accessible-pygments==0.0.5
AFMReader==0.0.1
alabaster==1.0.0
anyio==4.6.0
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
art==6.3
astroid==3.3.4
asttokens==2.4.1
astunparse==1.6.3
async-lru==2.0.4
attrs==24.2.0
autopep8==2.0.4
babel==2.16.0
beautifulsoup4==4.12.3
biopython==1.84
black==24.8.0
bleach==6.1.0
cattrs==24.1.2
certifi==2024.8.30
cffi==1.17.1
cfgv==3.4.0
charset-normalizer==3.3.2
cheap_repr==0.5.2
click==8.1.7
comm==0.2.2
contourpy==1.3.0
coverage==7.6.1
cycler==0.12.1
debugpy==1.8.6
decorator==5.1.1
defusedxml==0.7.1
dill==0.3.9
distlib==0.3.8
docstring-to-markdown==0.15
docutils==0.21.2
et-xmlfile==1.1.0
execnet==2.1.1
executing==2.1.0
fastjsonschema==2.20.0
filelock==3.16.1
filetype==1.2.0
flake8==7.1.1
flatbuffers==24.3.25
fonttools==4.54.1
fqdn==1.5.1
gast==0.6.0
google-pasta==0.2.0
grpcio==1.66.2
h11==0.14.0
h5py==3.12.1
httpcore==1.0.6
httpx==0.27.2
icdiff==2.0.7
identify==2.6.1
idna==3.10
igor2==0.5.8
imageio==2.35.1
imagesize==1.4.1
importlib_metadata==8.5.0
iniconfig==2.0.0
ipykernel==6.29.5
ipython==8.28.0
ipython-genutils==0.2.0
ipywidgets==8.1.5
isoduration==20.11.0
isort==5.13.2
jedi==0.19.1
jedi-language-server==0.41.4
Jinja2==3.1.4
joblib==1.4.2
json5==0.9.25
jsonpointer==3.0.0
jsonschema==4.23.0
jsonschema-specifications==2023.12.1
jupyter==1.1.1
jupyter-console==6.6.3
jupyter-events==0.10.0
jupyter-highlight-selected-word==0.2.0
jupyter-lsp==2.2.5
jupyter_client==8.6.3
jupyter_contrib_core==0.4.2
jupyter_contrib_nbextensions==0.7.0
jupyter_core==5.7.2
jupyter_nbextensions_configurator==0.6.4
jupyter_server==2.14.2
jupyter_server_terminals==0.5.3
jupyterlab==4.2.5
jupyterlab_pygments==0.3.0
jupyterlab_server==2.27.3
jupyterlab_widgets==3.0.13
jupyterthemes==0.20.0
jupytext==1.16.4
keras==3.6.0
kiwisolver==1.4.7
lazy_loader==0.4
lesscpy==0.15.1
libclang==18.1.1
llvmlite==0.43.0
loguru==0.7.2
lsprotocol==2023.0.1
lxml==5.3.0
Markdown==3.7
markdown-it-py==3.0.0
MarkupSafe==2.1.5
matplotlib==3.9.2
matplotlib-inline==0.1.7
mccabe==0.7.0
mdit-py-plugins==0.4.2
mdurl==0.1.2
mistune==3.0.2
ml-dtypes==0.4.1
mypy==1.11.2
mypy-extensions==1.0.0
myst-parser==4.0.0
namex==0.0.8
nbclient==0.10.0
nbconvert==7.16.4
nbformat==5.10.4
nbmultitask==0.1.0
nest-asyncio==1.6.0
networkx==3.3
nodeenv==1.9.1
notebook==7.2.2
notebook_shim==0.2.4
numba==0.60.0
numpy==1.26.4
numpydoc==1.8.0
numpyencoder==0.3.0
openpyxl==3.1.5
opt_einsum==3.4.0
optree==0.13.0
overrides==7.7.0
packaging==24.1
pandas==2.2.3
pandocfilters==1.5.1
parso==0.8.4
pathspec==0.12.1
pexpect==4.9.0
pillow==10.4.0
platformdirs==4.3.6
pluggy==1.5.0
ply==3.11
pockets==0.9.1
pprintpp==0.4.0
pre-commit==3.8.0
prometheus_client==0.21.0
prompt_toolkit==3.0.48
protobuf==4.25.5
psutil==5.9.8
ptyprocess==0.7.0
pure_eval==0.2.3
pycodestyle==2.12.1
pycparser==2.22
pydata-sphinx-theme==0.15.4
pydocstyle==6.3.0
pyfiglet==1.0.2
pyflakes==3.2.0
pygls==1.3.1
Pygments==2.18.0
pylint==3.3.1
pylsp-mypy==0.6.9
pyparsing==3.1.4
pyright==1.1.383
pyspm==0.6.2
pytest==8.3.3
pytest-cov==5.0.0
pytest-durations==1.3.1
pytest-github-actions-annotate-failures==0.2.0
pytest-icdiff==0.9
pytest-mock==3.14.0
pytest-mpl==0.17.0
pytest-pylint==0.21.0
pytest-regtest==2.3.1
pytest-testmon==2.1.1
pytest-xdist==3.6.1
python-dateutil==2.9.0.post0
python-json-logger==2.0.7
python-lsp-jsonrpc==1.1.2
python-lsp-ruff==2.2.2
python-lsp-server==1.12.0
pytoolconfig==1.3.1
pytz==2024.2
pyupgrade==3.17.0
PyYAML==6.0.2
pyzmq==26.2.0
referencing==0.35.1
requests==2.32.3
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rich==13.9.1
rope==1.13.0
rpds-py==0.20.0
ruamel.yaml==0.18.6
ruamel.yaml.clib==0.2.8
ruff==0.6.8
ruff-lsp==0.0.57
schema==0.7.7
scikit-image==0.24.0
scikit-learn==1.5.2
scipy==1.14.1
seaborn==0.13.2
Send2Trash==1.8.3
six==1.16.0
skan==0.11.1
sniffio==1.3.1
snoop==0.4.3
snowballstemmer==2.2.0
soupsieve==2.6
Sphinx==8.0.2
sphinx-autoapi==3.3.2
sphinx-autodoc-typehints==2.4.4
sphinx-markdown-tables==0.0.17
sphinx-multiversion==0.2.4
sphinx-rtd-theme==0.5.1
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-mermaid==0.9.2
sphinxcontrib-napoleon==0.7
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
stack-data==0.6.3
syrupy==4.7.1
tabulate==0.9.0
tensorboard==2.17.1
tensorboard-data-server==0.7.2
tensorflow==2.17.0
tensorflow-io-gcs-filesystem==0.37.1
termcolor==2.4.0
terminado==0.18.1
threadpoolctl==3.5.0
tifffile==2024.9.20
tinycss2==1.3.0
tokenize-rt==6.0.0
tomli==2.0.2
tomlkit==0.13.2
toolz==0.12.1
topoly==1.0.4
-e git+ssh://git@github.com/AFM-SPM/TopoStats.git@a99c9f05bfff79789a69004c8b64cb8986f5e086#egg=topostats
tornado==6.4.1
tqdm==4.66.5
traitlets==5.14.3
types-python-dateutil==2.9.0.20241003
typing_extensions==4.12.2
tzdata==2024.2
ujson==5.10.0
uri-template==1.3.0
urllib3==2.2.3
virtualenv==20.26.6
wcwidth==0.2.13
webcolors==24.8.0
webencodings==0.5.1
websocket-client==1.8.0
Werkzeug==3.0.4
whatthepatch==1.0.6
widgetsnbextension==4.0.13
wrapt==1.16.0
yapf==0.40.2
zipp==3.20.2