upxo package
Module contents
UPXO — UKAEA Poly-XTAL Operations
UPXO is an open-source Python framework for generating, analysing, manipulating, meshing, visualising, and exporting representative polycrystalline grain structures for materials science.
It is primarily developed for multi-scale computational studies of nuclear structural materials but applies equally to aerospace, automotive, and data-driven materials research.
Quick Start
UPXO grain structure simulations are driven by an Excel dashboard file that holds all simulation parameters. The minimal workflow is:
from upxo.ggrowth.mcgs import mcgs
pxt = mcgs(input_dashboard='path/to/input_dashboard.xls')
pxt.simulate()
pxt.detect_grains()
tslice = pxt.m[-1] # last saved Monte-Carlo step
gs = pxt.gs[tslice] # grain structure at that step
gs.char_morph_2d(
use_version=2,
npixels=True,
aspect_ratio=True,
solidity=True,
make_skim_prop=True,
)
print(gs.prop.head()) # pandas DataFrame of grain properties
See the Getting Started and Workflows pages for annotated step-by-step examples.
Package Structure
The UPXO package is organised into the following sub-packages:
Grain structure generation
upxo.ggrowth— Monte-Carlo grain growth simulation (Potts model, 2D and 3D)upxo.pxtal— Core grain structure classes and temporal-slice data modelupxo.grids— Grid construction and managementupxo.algorithms— Low-level MC iteration algorithms
Grain characterisation and operations
upxo.gsdataops— Grid and grain-ID operations on labelled imagesupxo.charops— Morphological characterisation routinesupxo.pxtalops— Grain structure operations: smoothing, merging, detectionupxo.connops— Connectivity and neighbourhood operationsupxo.topOps— Topological analysisupxo.netops— Grain network / graph operationsupxo.gbops— Grain boundary operations
Crystal structure and orientation
upxo.xtal— Grain object definitions (2D and 3D)upxo.xtalops— Crystal operationsupxo.xtalphy— Crystal physics: orientation, texture, slip systemsupxo.material— Material definitions
Meshing
upxo.meshing— Conformant and non-conformant FE mesh generation
Visualisation
upxo.viz— 2D and 3D plotting (matplotlib, pyvista)
Data interfaces
upxo.interfaces— Import/export: Abaqus, DAMASK, MOOSE, Dream.3D, EBSD, Excel, VTKupxo.statops— Statistical operations and samplingupxo.repqual— Representativeness quality assessment
Geometry and spatial entities
upxo.geoEntities— Points, lines, polygons, surfaces (2D and 3D)
Supporting utilities
upxo._sup— Internal data handlers, type validators, and utility functions
Key Concepts
- Labelled Feature Image (LFI / lgi)
A NumPy integer array where every element holds the integer ID of the grain it belongs to. This is the fundamental data representation of a grain structure in UPXO. Grain IDs are 1-based; 0 is reserved for background.
- Time slice (tslice / gsid)
A single saved snapshot of the grain structure at a given Monte-Carlo step.
pxt.mis the list of saved step indices;pxt.gs[tslice]retrieves the correspondingmcgs2_grain_structureobject.- mcgs2_grain_structure
The per-time-slice container. Holds the labelled grain image (
gs.lgi), the number of detected grains (gs.n), per-grain morphological properties (gs.prop), and neighbour data (gs.neigh_gid).
See the Key Concepts page for a full explanation.
Further Reading
Subpackages
- upxo.algorithms package
- Submodules
- upxo.algorithms.alg200 module
- upxo.algorithms.alg200gen module
- upxo.algorithms.alg201 module
- upxo.algorithms.alg202 module
- upxo.algorithms.alg220 module
- upxo.algorithms.alg221 module
- upxo.algorithms.alg222 module
- upxo.algorithms.alg223 module
- upxo.algorithms.alg224 module
- upxo.algorithms.alg230 module
- upxo.algorithms.alg300 module
- upxo.algorithms.alg300_old module
- upxo.algorithms.alg300a module
- upxo.algorithms.alg300b module
- upxo.algorithms.alg301 module
- upxo.algorithms.alg302 module
- upxo.algorithms.alg310 module
- upxo.algorithms.alg310_bu module
- upxo.algorithms.alg310_bu2 module
- upxo.algorithms.alg310_bu3 module
- Module contents
- Submodules
- upxo.analysis package
- upxo.charops package
- Submodules
- upxo.charops.mchar module
- mchar — Morphological characterisation of labelled feature images
detect_features()characterise_features_in_image_2d()characterise_features_in_image_v2()classify_grain_positions_2d()build_grain_props()extract_prop_area()extract_prop_eq_diameter()extract_prop_perimeter()extract_prop_perimeter_crofton()extract_prop_solidity()extract_prop_major_axis_length()extract_prop_minor_axis_length()extract_prop_morph_ori()extract_prop_feret_diameter()extract_prop_euler_number()extract_prop_eccentricity()extract_prop_aspect_ratio()extract_prop_compactness()extract_prop_npixels()extract_prop_gb_pixels()
- upxo.charops.mchar module
- Module contents
- Submodules
- upxo.connops package
- upxo.dclasses package
- upxo.external package
- upxo.flags_and_controls package
- upxo.gbops package
- Submodules
- upxo.gbops.geo1 module
- upxo.gbops.grainBoundOps3d module
- upxo.gbops.mcgb2dops module
- Module: mcgb2dops
- Functions
- Usage
PL_cell_boundaries()PL_cellb_junction_points()detect_cell_boundaries()pad_lfi()find_common_interface_boundaries()segment_cell_boundaries()see_bsegs_gids()characterise_boundary_segments()detect_junction_points()find_basic_JPO_stats()sort_junction_points()mask_featIDImg_at_coords()pad_with()segment_existing_boundaries()circular_sort()circular_sort_method1()method1()method2()method3_2d()calculate_junction_order()build_grain_pairs()identify_grain_boundary_pixels()find_gb_junction_point_map()compute_grain_boundary_locs()
- Module contents
- Submodules
- upxo.geoEntities package
- Submodules
- upxo.geoEntities.bases module
- upxo.geoEntities.comparisions module
- upxo.geoEntities.edge2d module
- upxo.geoEntities.featmake module
- upxo.geoEntities.geoCmp module
- upxo.geoEntities.muledge2d module
- upxo.geoEntities.mulpoint2d module
- upxo.geoEntities.mulpoint2d_old module
- upxo.geoEntities.mulpoint3d module
- upxo.geoEntities.mulsline2d module
- upxo.geoEntities.mulsline3d module
- upxo.geoEntities.plane module
- upxo.geoEntities.point2d module
- upxo.geoEntities.point3d module
- upxo.geoEntities.point_processes module
- upxo.geoEntities.polygon3d module
- upxo.geoEntities.pops module
- Usage
- Functions
CMPEQ_points()CMPEQ_pnt_fast_exact()CMPEQ_pnt_fast_EPS()CMPEQ_pnt_fast_tdist()CMPEQ_up2d_edge()CMPEQ_up2d_edges()DIST_point_edges()RELPOS_point_points_above()RELPOS_point_points_below()RELPOS_point_points_left()RELPOS_point_points_right()xadd()yadd()xmul()ymul()xdiv()ydiv()xabs()yabs()intize()floatize()roundround()xroundround()yroundround()roundceil()xroundceil()yroundceil()roundfloor()xroundfloor()yroundfloor()negxy()negx()negy()mirrorx()mirrory()translate()rotate()distance()pixelize()make_polygon()
- upxo.geoEntities.ring2d module
- upxo.geoEntities.sline2d module
- upxo.geoEntities.sline3d module
- upxo.geoEntities.surface module
- Module contents
- Submodules
- upxo.ggrowth package
- upxo.grids package
- upxo.gsContainters package
- Submodules
- Module contents
MC_GS_Container2dMC_GS_Container2d.indbMC_GS_Container2d.gssetMC_GS_Container2d.mctimeStartMC_GS_Container2d.mctimeStepMC_GS_Container2d.mctimeEndMC_GS_Container2d.char_kwargsMC_GS_Container2d.by_upxoMCSIM_gsset_GEN()MC_GS_Container2d.plot_temporal_distributions()MC_GS_Container2d.indbMC_GS_Container2d.gssetMC_GS_Container2d.mctimeStartMC_GS_Container2d.mctimeStepMC_GS_Container2d.mctimeEndMC_GS_Container2d.char_kwargsMC_GS_Container2d.stats_table
- upxo.gsdataops package
- Submodules
- upxo.gsdataops.gid_ops module
- Imports
- Metadata
- Applications
- Definitions
get_all_masks()find_O1_neigh_2d()find_O1_neigh_3d()find_O1_neigh_2d_fids()find_O2_neigh_3d_fids()extract_neigh_gid_subset()select_neighs_with_probability()shuffleLFIIDs()find_neighs2d()find_neighs3d()get_nth_order_neighbors()detect_islands()find_small_fids()find_boundary_fids2d()find_boundary_fids3d()find_internal_fids2d()find_internal_fids3d()find_corner_fids2d()find_corner_fids3d()find_edge_fids2d()find_edge_fids3d()
- upxo.gsdataops.grid_ops module
- Imports
- Metadata
- Applications
- Definitions
section_from_3d()build_pvgrid()mask_featIDImg_at_coords()find_feature_extended_bbox_pix()find_extended_bbox_pix_fids()find_extended_bounding_box_all_grains()rescale_grid_2d()stretch_grid_2d()resample_grid_2d()rescale_grid_3d()detect_grains_cc3d()detect_grains_3d()detect_grains_3d_optimized()detect_grains_using_s()detect_grains_fast_v3()detect_grains_greedy_3d()shuffle_feature_IDs()merge_features_to_neighs()get_ball_footprint()smooth_voxMorph_npass()smooth_voxMorph_1pass()majority_filter_2d()majority_filter_3d_npass()majority_filter_3d_1pass()compute_grain_bounding_boxes()compute_local_grain_mask()generate_test_2D_LFI_1()generate_constrained_hybrid_seeds()generate_constrained_hybrid_seeds_3d()generate_poisson_disk_seeds()generate_darted_seeds()pad_lfi()find_gb_v1()segment_grain_boundaries()make_gbsegImage()combine_partitions()detect_features_in_image_MCstateWise_2d()compute_twin_thickness_stats()compute_grain_intercept_lengths()
- upxo.gsdataops.gid_ops module
- Module contents
- Submodules
- upxo.heirGs package
- upxo.imageOps package
- upxo.interfaces package
- Subpackages
- upxo.interfaces.abaqus package
- upxo.interfaces.c package
- upxo.interfaces.damask package
- upxo.interfaces.defdap package
- upxo.interfaces.dream3d package
- upxo.interfaces.io package
- upxo.interfaces.matlab package
- upxo.interfaces.moose package
- upxo.interfaces.os package
- upxo.interfaces.report package
- upxo.interfaces.user_inputs package
- Module contents
- Subpackages
- upxo.jpops package
- upxo.material package
- Submodules
- upxo.material.Material module
build()MaterialIdentityProcessingConditionIrradiationConditionCrystalFamilyPhasesPhysicalPropertyElasticPropertyTensileStressStrainPlasticPropertyExpDataAvailabilityGrainEqDiaEbsdTexCompVolFracFCCTexFibreVolFracFCCTexCompWidthEBSDParametersTensileTestParametersTempKelvin()generate()
- upxo.material.Material module
- Module contents
- Submodules
- upxo.mechanics package
- upxo.meshing package
- upxo.misc package
- upxo.netops package
- upxo.parswep package
- upxo.propOps package
- upxo.pxtal package
- Submodules
- upxo.pxtal.FMSteels module
- upxo.pxtal.geogs module
- upxo.pxtal.geometrification module
- upxo.pxtal.geotess module
- upxo.pxtal.gridops module
- upxo.pxtal.gs_twin_3d module
- upxo.pxtal.images module
- upxo.pxtal.images1 module
- upxo.pxtal.img_essentials_01 module
- upxo.pxtal.mcgs2_temporal_slice module
- upxo.pxtal.mcgs3_temporal_slice module
- upxo.pxtal.polycrystal module
- upxo.pxtal.polyxtal module
- upxo.pxtal.pxtal_ori_map_2d module
- upxo.pxtal.single_phased module
- upxo.pxtal.vortess2d module
- upxo.pxtal.vortess3d module
- upxo.pxtal.vt module
- Module contents
- Submodules
- upxo.pxtalops package
- Submodules
- upxo.pxtalops.Characterizer module
- upxo.pxtalops.detect_grains_from_mcstates module
- upxo.pxtalops.grain_boundary_zones module
- upxo.pxtalops.gssmooth2d module
- upxo.pxtalops.manipulator_mergers module
- upxo.pxtalops.mcgsops2d module
- upxo.pxtalops.modeModifierMcgs2d module
- upxo.pxtalops.morphochar module
- upxo.pxtalops.temporalPatcher module
- upxo.pxtalops.vox2geom module
- upxo.pxtalops.vtgsops2d module
- Module contents
- Submodules
- upxo.repgen package
- upxo.repqual package
- upxo.statops package
- upxo.surrModelOps package
- upxo.tempops package
- upxo.topOps package
- upxo.uiOps package
- upxo.viz package
- Submodules
- upxo.viz.artwork_definitions module
- upxo.viz.dataviz module
- upxo.viz.ebsdviz module
- Usage
plot_grain_labels()plot_euler_maps()build_ipf_rgb()plot_grain_size_histogram()plot_grain_structure_with_boundaries()plot_mdf()plot_mdf_selected()plot_csl_grain_map()print_parent_grain_summary()plot_parent_grain_summary()plot_parent_twin_map()plot_combined_parent_twin_map()plot_grain_role_property_stats()print_grain_role_ratios()plot_grain_role_map()plot_twin_introduction_map()plot_twin_thickness_stats()plot_grain_area_comparison()
- upxo.viz.gbviz module
- upxo.viz.gsviz module
see_map()see_bsegs_gid()see_bsegs_gid_pix()plot_multipolygon_geometric()make_pvgrid()plot_pvgrid()grain_viewer()view_selected_grain_boundary_voxels()viz_clip_plane()viz_mesh_slice()viz_mesh_slice_ortho()vox2geom_plots()view_grains()view_boundary_voxels()see_clip_plane()see_mesh_slice()see_mesh_slice_ortho()plot_manifold_geom()see_2dPoints()
- upxo.viz.helpers module
- upxo.viz.meshviz module
- upxo.viz.plot_artefacts module
- upxo.viz.vizDistr module
- Module contents
- Submodules
- upxo.xtal package
- upxo.xtalops package
- upxo.xtalphy package
- Submodules
- upxo.xtalphy.crystal_orientation module
- crystal_orientation.py
Rz()Rx()euler_bunge_to_matrix()euler_bunge_to_matrix_batch()matrix_to_euler_bunge()normalize_euler_bunge()axis_angle_to_R()proj_to_so3()unique_rotations()cubic_symmetry_operators()get_cubic_ops_np()fcc_symmetrise_ori()rand_unit_vector()rand_uniform_SO3()cubic_rotation_angle()cubic_rotation_angle_batch()cubic_rotation_axis()cubic_rotation_axis_batch()cubic_misorientation()cubic_misorientation_scalar()ipf_color()grain_boundary_misorientation_distribution()gbmd_from_lfi()quat_to_R_batch()grain_avg_quats()compute_mdf_from_quats()CUBIC_CSLdetect_mdf_peaks()segregate_csl_pairs()csl_volume_fractions()identify_parent_grains()classify_grain_roles_extended()compute_grain_role_ratios()assign_grain_roles_by_ratio()introduce_twins_by_csl()compute_scale_factor_grain_size()compute_twin_thickness_stats()compute_s3_lamella_angle_2d()assign_orientations_mdf_matched()assign_parent_orientations()get_ks_rotations()exmp_cubic_misorientation()exmp_grain_boundary_misorientation_distribution()exmp_gbmd_from_lfi()exmp_euler_bunge_to_matrix()exmp_normalize_euler_bunge()exmp_fcc_symmetrise_ori()exmp_ipf_color()exmp_get_ks_rotations()exmp_all()
- upxo.xtalphy.orientation module
- upxo.xtalphy.texops module
- upxo.xtalphy.crystal_orientation module
- Module contents
- Submodules