CNF:CNF: Difference between revisions

From crtc.cs.odu.edu
Jump to navigation Jump to search
Jbest (talk | contribs)
Spyridon97 (talk | contribs)
 
(605 intermediate revisions by 7 users not shown)
Line 1: Line 1:
== Project Description ==
= Description =
We propose an interdisciplinary project to leverage advanced computational methods from medical imaging for processing phase space distributions in nuclear femtography experiments, with the aim to enable next-generation process simulations, data analyses, and physics model comparisons.  
We propose an interdisciplinary project to leverage advanced computational methods from medical imaging for processing phase-space distributions in nuclear femtography experiments, with the aim to enable next-generation process simulations, data analyses, and physics model comparisons.


A detailed list of results for CNF cases received from JLAB are presented here:
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]
= SURA CNF19-04 Project =
== Objectives ==
== Objectives ==
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3)  
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3)  
* (O2) Explore potential physics model comparisons enabled by the new technologies  
* (O2) Explore potential physics model comparisons enabled by the new technologies


== Short-term Deliverables (6 months) ==
== Short-term Deliverables (6 months) ==
<li style="display: inline-block;">
[[File: distributionquarks.png|thumb|right|350px| '''Distribution of the probability of quarks' existence based on the change in momentum''']]
[[File: distributionquarks.png|thumb|right|350px| '''Distribution of the probability of quarks' existence based on the change in momentum''']]
* (a) Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [<span style="color:green">DONE</span>]
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [<span style="color:green">DONE</span>]
** [http://www.cs.odu.edu/crtc/cnf_project/index.html CRTC Image to Mesh Conversion Tools for CNF]
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [<span style="color:green">DONE</span>] 
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.
# Use of Tesselation software gives the ability to view and analyze physics observables in a new way with modern tools. It also allows for fast, efficient Monte-Carlo generation of physics observables for event generation from tessellated objects. Computation of proton structures and physics observables are otherwise very computationally extensive. -- [<span style="color:blue">DONE</span>]
## explore the option of generating graded meshes (by September).
# Experiment with 3D Slicer and Paraview open-source imaging and visualization systems to display visual representations of the entire space and/or m-slices, with m < n (by Sept. 30);  -- [<span style="color:green">DONE</span>]
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [<span style="color:green">DONE</span>]
## Invited visitors and agenda is completed.
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]
 
= SURA CNF20-001 Project =
== Objectives==
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example
 
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)
 
(O3) Explore gradation in 4D tessellations using a given metric or sizing function
 
== Short-term Deliverables (3 months)==
 
'''August 15'''
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):
** Convert the output of PARTONS and UVA’s GPD generators into Nearly Raw Raster Data (NRRD) format (Liuiti, Heddle, Chrisochoides). This (ODU) group will be responsible for PARTONS and will assist UVA with GPD generators.
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on "The Integration of Imaging and Visualization in Femtography" (Hyde, Liuiti, Heddle, Chrisochoides)
* fine-tune existing 3D I2M conversion software tool and deliver a new Docker to JLab that enhances I/O and meets new requirements identified in the last six months (Chrisochoides/CS Gard. Student);
* pre-process 4D CNF data and create a 4D synthetic data set for developing the 4D triangulation method (Gavalian/Chrisochoides/Computer Science (CS) Grad. Student);
'''September 30, 2020:'''
 
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);
* “smart 3-dimensional lookup table” based on an '''adaptive or graded''' mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);
 
== Smart look-up tables ==
 
Objective: “smart 3-dimensional lookup table” based on adaptive mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student)
 
=== Timetable for paper on "smart lookup table" for fast MC simulations ===
# Define Region of Interest (RoI)
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper
## Use a cube or closed 3D surface (to be tested, it can be done within a week): very efficient way to define the RoI, as well as it is known.
## use sparse and course set of points in a broader area and slowly converge  to the RoI with as many points and their tessellation are required by a given metric.
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August
# Implement smart lookup table using tessellation generated from (1)
## reproduce Gagik's results
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report
### Mitch/Charles define (if there is a need) a new way that might involve UVA's data fitting method: a proposal by end of July.
#define an example problem pertinent to CNF/IEC where "smart lookup table for fast MC simulations''' are the dominant term in the execution time (Charles/Christian/Gagik)
## Putting Things Alltogether (end of August the latest first week of Sept.)
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)
 
==Weekly Reports==
 
=== Week May 17 - 22 ===
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [<span style="color:green">DONE</span>]
# (All) Get to know the team: Michell (Physics) and the CS students that will be assisting in the API for the tessellation (Spiros) and ParaView for Visualization (Kevin) [<span style="color:green">DONE</span>]
# (Charles/Michell/Nikos) Setup a proposal for a  time table for this aspect of the  project it will be fine-tuned and finalized in the first official meeting [<span style="color:green">DONE</span>]
# (All) Talk about the wiki page we need to set up for our weekly reports [<span style="color:green">DONE</span>]
 
=== Week May 25 - 30 ===
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [<span style="color:green">DONE</span>]
# (Mitch) Comfortable using CRTC's I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [<span style="color:green">DONE</span>]
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [<span style="color:green">DONE</span>]
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [<span style="color:orange">TODO</span>]
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [<span style="color:green">DONE</span>]
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [<span style="color:green">DONE</span>]
 
=== Week June 1 - 6 ===
# (Spiros) Add binary IO for output meshes. [<span style="color:green">DONE</span>]
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [<span style="color:green">DONE</span>]
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [<span style="color:green">DONE</span>]
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?
## (Spiros) because PODM currently supports images that are uniform grids. [<span style="color:green">DONE</span>]
 
=== Week June 8 - 12 ===
# (Mitch/Charles) Compute PARTONS points at vertices of simplices,
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?
### Vertices [<span style="color:green">DONE</span>]
## Construct difference of interpolation values at vertices with new computed PARTONS values [<span style="color:green">DONE</span>]
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch's  new values on the (i-1)th tessellation
## (Spiros) By creating Images out of the meshes using interpolation: [<span style="color:green">DONE</span>]
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]
# (Mitch/Kevin/Charles) Help display Mitch's 3D data using predefined labels, etc..
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)
### Linear vs. log axis. [<span style="color:green">DONE</span>]
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [<span style="color:green">DONE</span>]
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [<span style="color:green">DONE</span>]
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik's MC kernel] for 2D [<span style="color:green">DONE</span>]
 
=== Week June 15 - 19 ===
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications
## [https://odu.app.box.com/folder/115714696781 Code folder] of [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software] [<span style="color:green">DONE</span>]
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [<span style="color:green">DONE</span>]
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation & Interpolation document] of Charles [<span style="color:green">DONE</span>]
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [<span style="color:green">DONE</span>]
## (Spiros) Develop a function that reads the points and their weights of a tessellation [<span style="color:green">DONE</span>]
## (Mitch) Close the loop [<span style="color:orange">TODO</span>]
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [<span style="color:green">DONE</span>]
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik's MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik's MC kernel] [<span style="color:green">DONE</span>]
## (Spiros) Refactor Gagik's code, use VTK library and add comments [<span style="color:green">DONE</span>]
##  '''(Mitch/Gagik) Produce results using 3D tesselations [<span style="color:orange">TODO</span>]'''
# (Charles) in parallel work on a method for "smart lookup table"
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation & Interpolation document]  [<span style="color:green">DONE</span>], corrections, update, expansion in progress
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik's MC kernel] and either consolidate the two or end up with two different methods. [<span style="color:orange">TODO</span>]
 
=== Week June 22 - 26 ===
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [<span style="color:green">DONE</span>]:
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation
# (Spiros) Creationg of a 4D Synthetic Image Generator
## HyperSphere (4D Sphere) [<span style="color:green">DONE</span>]
## HyperCube (4D Cube) [<span style="color:green">DONE</span>]
# (Spiros/Mitch) Parallelize Partons' code using OpenMP and submit jobs on Turing/Wahab.
## (Spiros) Help Mitch login and view files on Wahab [<span style="color:green">DONE</span>]
## (Spiros/Mitch) Explore potential to parallelize Partons' code [<span style="color:orange">TODO: Year 2021</span>]
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year.
## (Spiros) Explore potential to execute multiple jobs on Wahab [<span style="color:green">DONE</span>]
### If this is hard as the item above might need to move for next year.
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [<span style="color:green">DONE</span>]
##(Mitch/Spiros) Generalize MC Gagik's 2D code to 3D and consider potential higher dimensions [<span style="color:orange">TODO: Year 2021</span>]
# (Mitch) Re-run PARTONS at mesh points [<span style="color:green">DONE</span>]
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [<span style="color:green">DONE</span>]
## Plot new values on original tessellation points
 
=== Week June 29 - July 3 ===
# '''(O1)''' (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:
#### For discussion:  Which variables to keep fixed, which variables to display
# '''(O2)''' (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [<span style="color:green">Done</span>]
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [<span style="color:orange">TODO: Year 2021</span>]
### In the PDR.PODM framework after the initial mesh construction each worker receives a part of the mesh and refines it. During initialization one essentially starts from a serialized version of the mesh (similar to reading a file) and populates internal data structures. After all, is set, PODM works as usual.
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information.
### Keeping vertex-based information means than we can get produce adaptive results using just information of the new weights skipping thus the creation of intermediate images.
### As a further (future) step this approach can enable an "always in memory mesh" where the data are always in memory and being accessed by a common API from each component of the pipeline.
# '''(O3)''' (Spiros/Mitch/Charles) Visualization
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D "slice" and then use ParaView to display results [<span style="color:orange">TODO</span>]
### Define what a 3D "slice" means in 4D space [<span style="color:orange">TODO</span>]
## (Mitch/Charles) Generate PARTON 4D and a 3D "slice" for these data, for validation of viz. [<span style="color:orange">TODO</span>]
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [<span style="color:orange">TODO</span>]
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [<span style="color:green">DONE</span>]
# '''(O4)''' Integration with UVA and CNU
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?
## What is the status with UVA, are there any changes due to lack of additional funding?
 
=== Week July 6 - July 10 ===
# (Spiros / Mitch) Adaptivity Metrics
## Using local denominator
### max-min / mean (Not working)
### rms / mean (Not working)
### Note: Local denominators are not working well because of the fact that they perform local normalization which results in uniform gradation, and therefore a uniform mesh
## Using no denominator
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.
## Using global denominator
### rms / globalMean (an idea which needs tweaking)
#### Note: not bounded
### rms / globalRms (Possibly working)
#### Note: not upper bounded [0, +oo)
### max-min / elementWeightRange
#### Note: bounded [0, 1]
### Note: Global denominators work, and the weight-limit is normalized based on the given image.
## [[CNF:Metric Figures | Metric Figures]]
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]
 
=== Week July 13 - July 17 ===
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch's code) [<span style="color:green">DONE</span>]
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [<span style="color:orange">TODO</span>]
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]
## (Mitch/Charles) Identify Requirements [TODO]
## (Spiros) Design a library that satisfies the requirements [<span style="color:orange">TODO with a supplement</span>]
# (Spiros) Design of a templated software, [https://crtc.cs.odu.edu/CNF:Monte_Carlo_Event_Generator_using_a_Tessellation Monte Carlo Event Generator using a Tessellation] [<span style="color:orange">TODO with a supplement</span>]
## Re-organize Gagik's 2D code, CMI, templated for 2-3-4 dimensions, improve the complexity of search for given cell weight (from linear to binary) and parallelization using OpenMP
# (Spiros) Sizing function Modifications:
## Change way of calculating value for sampling points
### Old version: assign the value of sampling point using to the closest pixel value
### New version: assign the value of sampling point using interpolation over the image [<span style="color:green">DONE</span>]
### Reason of change: The problem with the old way of assigning values to the sampling points is that there is a high possibility of 2 or more sampling points having the same assigned value. I think that we can solve this issue by assigning values using interpolation to be sure that every sampling point would have a unique assigned value. This way we would need fewer elements to be able to capture the gradation.
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [<span style="color:green">DONE</span>]
### Reason of change: this way we create larger elements in regions that are not of interest
# (Spiros/Kevin/Mitch) Results:
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [<span style="color:green">DONE</span>]
### Mitch generated the data the previous week
## (Mitch) Generate a new tesselation with GPDGK16_uH_nxi_210 (with old sizing function) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img_nxi.3D211 GPDGK16_uH_img_nxi=211] [<span style="color:green">DONE</span>]
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [<span style="color:green">DONE</span>]
## Implement "acceptance rejection" algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation & Interpolation document] [<span style="color:green">DONE</span>]
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation & Interpolation document] [<span style="color:green">DONE</span>]
### Plot in ROOT CFF monte carlo events from tessellation [<span style="color:green">DONE</span>]
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [<span style="color:orange">TODO</span>]
## (Spiros/Mitch) Add needed methods from Spiros's library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [<span style="color:orange">TODO</span>]
# (Mitch/Charles) Analyze CFF and Cross Section results
## Plot RMS deviation of cell points from CFF mesh
## Plot and fit t dependence of CFF at fixed value of Q<sup>2</sup>, calculate RMSD of fit, extract fit parameters
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [<span style="color:green">DONE</span>] and good progress toward "Smart Lookup Table"[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]
 
=== Week July 20 - July 24 ===
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [<span style="color:green">DONE</span>]
# (Spiros) Interpolate Kevin's CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [<span style="color:green">DONE</span>]
# (Mitch) Make flow-chart explanation of "smart look-up table" and Monte Carlo code  [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [<span style="color:green">DONE</span>]
## Write driver for point look-up [<span style="color:orange">Done but needs testing</span>]
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations
## Using barycenter [[Media:CentroidError.png]] [<span style="color:green">DONE</span>]
# (Mitch/Charles) Change of variables for CFF generation from: ξ-> X<sub>Bj</sub>  and  t->t' . Reproduce mesh for new variables [<span style="color:green">DONE</span>]
 
=== Week July 27 - July 31 ===
# (Spiros) New version of CRTC_I2M docker file and documentation. [<span style="color:green">DONE</span>]
## The Changes for PODM3D are:
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.
# (Mitch) Generate tessellations in X<sub>Bj</sub> and t' for imaginary and ln(real) parts of CFF using new PODM3D docker
## Plot interpolation error at the centroid
# (Mitch) Outline a code to compute DVCS cross-section
## Understand/modify the Bethe Heitler CS code
## Work through the Dirac algebra
 
=== Week Aug 3 - Aug 7 ===
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [<span style="color:green">DONE</span>]
## Get distance-based weight mean value of a point using k nearest points
# (Charles, Mitch)  New sizing function S[f,g]
## f = Im[CFF],  g = Re[CFF]
## for each simplex with points '''X'''(''i'') ''i=0,1,2,3,'' and functional values ''f(i), g(i)'' [[File:SizingReIm.png]]
## New variables:  Log10(xBj), Sqrt[t']/(0.5 GeV), Log2(Q2)
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from  FOAM structure in root.cern.ch software package
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]
 
=== Week Aug 10 - Aug 14 ===
# (Spiros) Implement Sizing Functions with real and imaginary images [<span style="color:green">DONE</span>]
## [[File:SizingReIm.png]]
## Element weight range based:
### elementWeightRangeF = abs(max(f) - min(f))
### elementWeightRangeG = abs(max(g) - min(g))
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG > 2 * elementWeightLimit
### Condition2: elementWeightRangeF / imageWeightRangeF > elementWeightLimit && elementWeightRangeG / imageWeightRangeG > elementWeightLimit
## Results: will be produced on the spot
# (Spiros) [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing Efficient Monte Carlo Simulation using a Compton Form Factor Tessellation as a smart lookup table ] [<span style="color:green">DONE</span>]
# (Spiros) Slice of 4D mesh
## Current implementation does not produce results with cells.
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]
## [[Media:CentroidError_lnReal.png|Barycenter error]]
=== Week Aug 17 - Aug 21 ===
# (All) Define the structure of the paper
 
=== Week Aug 24 - Aug 28 ===
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab
## (Wirawan/John/Spiros/) Sequentially
### (John) Set up a MySQL server on Wahab for partons [<span style="color:green">DONE</span>]
### (Wirawan) Create a container with all the required dependencies [<span style="color:green">DONE</span>]
### (Spiros) Set it up and test it [<span style="color:green">DONE</span>]
## (Spiros/Mitch) In a distributed way
### (Spiros) Create the required tools to run everything in a distributed way [<span style="color:green">DONE</span>]
### (Spiros) Test the ability to do it [<span style="color:green">DONE</span>]
### Notes:
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.
#### (Spiros) First implementation: split the kinematics dataset like. This way we create '''areas''' of kinematics.
##### N0_0... N0_m-1,
##### N1_0... N1_m-1,
##### N2_0... N2_m-1,
##### ...,
##### Nn-1_0... Nn-1_m-1.
#### (Spiros) Second implementation: split the kinematics dataset by creating chunks of size 1 until each kinematics dataset for each node is filled. This way all nodes will have points of similar kinematics. [<span style="color:green">DONE</span>]
##### N0_0, N1_0, N2_0 .. Nn-1_0,
##### N0_1, N1_1, N2_1 .. Nn-1_1,
##### N0_2, N1_2, N2_2 .. Nn-1_2,
##### ...,
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1
## (Spiros) In a shared memory way:
### Executing multiple instances of the same program on the same node using CPU affinity to specify the CPU core that the process is going to utilize. [<span style="color:green">DONE</span>]
## (Spiros) In a distributed + shared memory way:
### Create a script that runs partons in parallel using shared memory. [<span style="color:green">Done</span>]
### Create a script that runs partons in parallel using distributed + shared memory. [<span style="color:green">Done</span>]
## (Spiros) Speedup:
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]
 
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes
## Recalculate PARTONS values of vertices for each mesh
## Script to generate interpolation error histograms for each mesh
## 2D histogram of the standard deviations of each interpolation error histogram [<span style="color:orange">TODO</span>]
 
=== Week Aug 31 - Sept 3 ===
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [<span style="color:green">DONE</span>]
## Create synthetic HyperCube and HyperSphere images
## Generate 4D uniform meshes out of the synthetic images
## Create a reader for the 4D meshes
 
=== Week Sept 7 - Sept 11 ===
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]
## Fix Axis ordering. [<span style="color:green">DONE</span>]
# (Spiros/Mitch) PartonsToNRRD
## Generate Images with spacing other than 1. [<span style="color:green">DONE</span>]
# (Spiros) PODM3D
## Handle cnf images with spacing other than 1. [<span style="color:green">DONE</span>]
## Create meshes inside well-defined geometric domain . [<span style="color:green">DONE</span>]
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]
## Get neighbors of a cell [<span style="color:green">DONE</span>]
# (Spiros) Interesting paper
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]
=== Week Sept 28 - Oct 2 ===
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [<span style="color:green">DONE</span>]
# (Spiros) Generate randomly uniform points inside a cell using: [<span style="color:green">DONE</span>]
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]
 
== <span style="color:orange">TODO</span> with a potential supplement ==
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..
# (Spiros/Nikos) Explore Christian's request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube


* (b) Generation of n-dimensional sequence of tessellations for numerical integration (by July 1);  Gagik? -- [<span style="color:blue">IN PROGRESS</span>]
= SURA CNF21 Project  (C2020-FEMT-006-01) =
== Objectives ==
* Close the adaptivity loop
* Deliver Parallel (Distributed) PARTONS
* Generate 4D tessellations on real data from PARTONS
* Publish a paper for the 3D CFF approximation


* (c) Use of n-dimensional tessellations for efficient sampling of physics model and generation of event distributions for physics analysis;  Gagik? -- [<span style="color:blue">IN PROGRESS</span>]  
== Short-term Deliverables (6 months) ==
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [<span style="color:orange">TODO</span>]
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [<span style="color:orange">TODO</span>]
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [<span style="color:orange">TODO</span>]
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [<span style="color:orange">TODO</span>]
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [<span style="color:orange">TODO</span>]
# (Polykarpos/Christos/Spiros) Deliver preliminary data on Data Preservation and other issues related to CNF data and CFF approximations could be used as a case study (Sept 15)
# (All) work on the next proposals (Sept 30)


* (d) Experiment with 3D Slicer and Paraview open source imaging and visualization systems to display visual representations of the entire space and/or m-slices, with m < n (by Sept. 30);  -- [<span style="color:green">DONE</span>]
== Weekly Reports ==
** [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]
=== Week April 26 - May 2 ===
** [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]
# Using the interpolation error as the sizing function is the way to go to close the "loop" for the following reasons:
## Minimizes the amount of partons calculations needed to guarantee that the interpolation error within every cell is below <= error-threshold
## Minimizes the number of points/cells of the mesh. The benefits of this are:
### Fewer points/cells -> faster Monte Carlo Event Generation
### Fewer points/cells -> faster IO
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:
### Simpler model storage for the future database of CNF models
### Let's say that we create a mesh for each CFF and every mesh has 100k cells. So the total number of cells needed are: number of CFFs * 100k. <br> Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.
### By splitting a cell that one CFF requires while another CFF does not, we create a mesh with a better error distribution than the one that would have if we did not split that cell.  
### Additionally, for the Monte Carlo event generation step. If we were to create a random point within a domain, we would have to locate the cell in which this point lies into for every CFFs mesh (complexity = O (log (number of cells) * number of CFFs)). <br> While we could just randomly create a point based on the volume of every cell, as we do it currently just for one CFF (complexity O(1)).
# The steps that we will describe in the paper that we tried to achieve the desired result (sufficient interpolation accuracy throughout every cell of a cell, with the minimum partons calculations) are:
## (Optional) Gagik's approach: he proposed to decimate a huge image (1,000,000 partons calculation) and then generate a tessellation that would capture the important features of the CFF described
### Pros:
#### Predefined number of partons calculations
#### Small mesh size
### Cons:
#### Many Partons calculations
#### No interpolation error guarantee
#### Only for one CFF
## Create a dense enough uniform mesh in order to satisfy the desired interpolation accuracy
### Pros:
#### Achieves the required interpolation accuracy
### Cons:
#### Big mesh size
#### Many Partons calculations
#### You don't know how big your mesh should be
#### Only for one CFF
## Create a mesh in an iterative fashion by adding random points to the mesh till you satisfy the desired interpolation accuracy
### Pros:
#### Achieves the required interpolation accuracy
### Cons:
#### Big mesh size
#### Many Partons calculations
#### Only for one CFF
## Create a mesh using the linear interpolation error as the sizing function
### Pros:
#### Everything that was mentioned
### Cons:
#### Maybe caching issues, but they are possibly insignificant since PODM is already really fast.


* (e) Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [<span style="color:blue">IN PROGRESS</span>]  
= References =
** Invited visitors and agenda is completed.  
# Related Efforts
** The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] will take place on August 19 and 20 at JLab.
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package
</li>
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]
# Examples for the Journal paper on "Smart Loolup Tables for MC"
##'''Computer Physics Communications:''' [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]
## '''Journal of Computational Physics:''' [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]
## '''Nature:''' [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]
## Other
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]
# Other papers
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]
## [https://www.hpl.hp.com/techreports/2002/HPL-2002-320.pdf n-Simplex Interpolation]
## [https://www.techscience.com/CMES/v94n4/26992/pdf Quadratic Interpolation with Tetrahedra for 3D Scalar Fields]
## [https://www.researchgate.net/publication/326950468_A_look-up_table_method_based_on_unstructured_grids_and_its_application_to_non-ideal_compressible_fluid_dynamic_simulations A look-up table method based on unstructured grids and its application to non-ideal compressible fluid dynamic simulations]
## [https://arxiv.org/pdf/physics/0203033.pdf Foam: A General-Purpose Cellular Monte Carlo Event Generator]


== Restricted Access ==
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory]  
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory]  
* [https://git-community.cs.odu.edu/aangelop/PODM-Superbuild PODM Docker image source files]  
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files]  
* [https://git-community.cs.odu.edu/ctsolakis/cnf_website CNF Tools website build files]
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]
* Adaptivity
** [[CNF:Mesh Sizing for CNF data]]
** [[CNF:CNF_Adaptivity]]
* [[CNF:Visualization for CNF data]]
* [[CNF:Machine Learning]]
 
* https://www.jlab.org/indico/event/335/
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]

Latest revision as of 15:44, 27 May 2021

Description

We propose an interdisciplinary project to leverage advanced computational methods from medical imaging for processing phase-space distributions in nuclear femtography experiments, with the aim to enable next-generation process simulations, data analyses, and physics model comparisons.

A detailed list of results for CNF cases received from JLAB are presented here: Example Meshes

SURA CNF19-04 Project

Objectives

  • (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3)
  • (O2) Explore potential physics model comparisons enabled by the new technologies

Short-term Deliverables (6 months)

Distribution of the probability of quarks' existence based on the change in momentum
  1. Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [DONE]
  2. Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [DONE]
    1. software delivered to JLAB, May 2019: CRTC Image to Mesh Conversion Software Suite.
    2. software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.
  3. Use of Tesselation software gives the ability to view and analyze physics observables in a new way with modern tools. It also allows for fast, efficient Monte-Carlo generation of physics observables for event generation from tessellated objects. Computation of proton structures and physics observables are otherwise very computationally extensive. -- [DONE]
    1. explore the option of generating graded meshes (by September).
  4. Experiment with 3D Slicer and Paraview open-source imaging and visualization systems to display visual representations of the entire space and/or m-slices, with m < n (by Sept. 30); -- [DONE]
    1. Imaging Demo using Paraview
    2. Paraview Glance
  5. Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [DONE]
    1. Invited visitors and agenda is completed.
    2. The CNF Imaging Workshop took place on August 19th and 20th at JLab.
  6. CNF mesh examples

SURA CNF20-001 Project

Objectives

(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example

(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)

(O3) Explore gradation in 4D tessellations using a given metric or sizing function

Short-term Deliverables (3 months)

August 15

  • Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):
    • Convert the output of PARTONS and UVA’s GPD generators into Nearly Raw Raster Data (NRRD) format (Liuiti, Heddle, Chrisochoides). This (ODU) group will be responsible for PARTONS and will assist UVA with GPD generators.
    • Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on "The Integration of Imaging and Visualization in Femtography" (Hyde, Liuiti, Heddle, Chrisochoides)
  • fine-tune existing 3D I2M conversion software tool and deliver a new Docker to JLab that enhances I/O and meets new requirements identified in the last six months (Chrisochoides/CS Gard. Student);
  • pre-process 4D CNF data and create a 4D synthetic data set for developing the 4D triangulation method (Gavalian/Chrisochoides/Computer Science (CS) Grad. Student);

September 30, 2020:

  • Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):
    • Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)
  • create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);
  • 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);
  • “smart 3-dimensional lookup table” based on an adaptive or graded mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);

Smart look-up tables

Objective: “smart 3-dimensional lookup table” based on adaptive mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student)

Timetable for paper on "smart lookup table" for fast MC simulations

  1. Define Region of Interest (RoI)
    1. Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside the scope of the paper
    2. Use a cube or closed 3D surface (to be tested, it can be done within a week): very efficient way to define the RoI, as well as it is known.
    3. use sparse and course set of points in a broader area and slowly converge to the RoI with as many points and their tessellation are required by a given metric.
      1. need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August
  2. Implement smart lookup table using tessellation generated from (1)
    1. reproduce Gagik's results
      1. Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report
      2. Mitch/Charles define (if there is a need) a new way that might involve UVA's data fitting method: a proposal by end of July.
  3. define an example problem pertinent to CNF/IEC where "smart lookup table for fast MC simulations are the dominant term in the execution time (Charles/Christian/Gagik)
    1. Putting Things Alltogether (end of August the latest first week of Sept.)
  4. Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)

Weekly Reports

Week May 17 - 22

  1. (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [DONE]
  2. (All) Get to know the team: Michell (Physics) and the CS students that will be assisting in the API for the tessellation (Spiros) and ParaView for Visualization (Kevin) [DONE]
  3. (Charles/Michell/Nikos) Setup a proposal for a time table for this aspect of the project it will be fine-tuned and finalized in the first official meeting [DONE]
  4. (All) Talk about the wiki page we need to set up for our weekly reports [DONE]

Week May 25 - 30

  1. (Spiros) Smooth transition Michell to use CRTC I2M conversion [DONE]
  2. (Mitch) Comfortable using CRTC's I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [DONE]
  3. (Kevin) Identify 3D ParaView Plugins that we might need to display results [DONE]
  4. (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [TODO]
  5. (Charles/Chistian/Gagik) Examples of target Journals we want to consider for paper submission [DONE]
  6. (Christos) Slides from 05-22 here [DONE]

Week June 1 - 6

  1. (Spiros) Add binary IO for output meshes. [DONE]
  2. (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [DONE]
  3. (Kevin) Practice utilizing and applying custom functions on data within Paraview [DONE]
    1. Examples: Visualization page
  4. (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?
    1. (Spiros) because PODM currently supports images that are uniform grids. [DONE]

Week June 8 - 12

  1. (Mitch/Charles) Compute PARTONS points at vertices of simplices,
    1. Question: Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?
      1. Vertices [DONE]
    2. Construct difference of interpolation values at vertices with new computed PARTONS values [DONE]
  2. (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using Mitch's new values on the (i-1)th tessellation
    1. (Spiros) By creating Images out of the meshes using interpolation: [DONE]
      1. Weighted Mesh To Image Software
  3. (Mitch/Kevin/Charles) Help display Mitch's 3D data using predefined labels, etc..
    1. Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)
      1. Linear vs. log axis. [DONE]
      2. Axis labels: convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [DONE]
      3. Instructions Available Here
    2. Change PARTONS mesh to equal steps in log(xi) and log(Q2) [DONE]
  4. (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using Gagik's MC kernel for 2D [DONE]

Week June 15 - 19

  1. (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications
    1. Code folder of Weighted Mesh To Image Software [DONE]
    2. Fomulation of VTK Interpolation [DONE]
    3. Compare VTK Interpolation with Tessellation & Interpolation document of Charles [DONE]
  2. (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop
    1. (Spiros) Develop a function that reads and converts an image to a 3D lattice [DONE]
    2. (Spiros) Develop a function that reads the points and their weights of a tessellation [DONE]
    3. (Mitch) Close the loop [TODO]
  3. (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [DONE]
  4. (Mitch/Gagik/Spiros) Figure out the computational details of Gagik's MC kernel for “smart lookup table for MC kernel”, produce 3D results and refactor the code:
    1. (Mitch) Figure out the computational details of Gagik's MC kernel [DONE]
    2. (Spiros) Refactor Gagik's code, use VTK library and add comments [DONE]
    3. (Mitch/Gagik) Produce results using 3D tesselations [TODO]
  5. (Charles) in parallel work on a method for "smart lookup table"
    1. Tessellation & Interpolation document [DONE], corrections, update, expansion in progress
    2. Compare with Gagik's MC kernel and either consolidate the two or end up with two different methods. [TODO]

Week June 22 - 26

  1. (Christian) Summary of CNF projects for 2019/20, CNF Summary Slides [DONE]:
  2. (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation
  3. (Spiros) Creationg of a 4D Synthetic Image Generator
    1. HyperSphere (4D Sphere) [DONE]
    2. HyperCube (4D Cube) [DONE]
  4. (Spiros/Mitch) Parallelize Partons' code using OpenMP and submit jobs on Turing/Wahab.
    1. (Spiros) Help Mitch login and view files on Wahab [DONE]
    2. (Spiros/Mitch) Explore potential to parallelize Partons' code [TODO: Year 2021]
      1. It looks like requires more effort than our project could afford. It has to be moved as a task for next year.
    3. (Spiros) Explore potential to execute multiple jobs on Wahab [DONE]
      1. If this is hard as the item above might need to move for next year.
  5. (Mitch) Create write-up explanation of Gagiks Monte Carlo code [DONE]
    1. (Mitch/Spiros) Generalize MC Gagik's 2D code to 3D and consider potential higher dimensions [TODO: Year 2021]
  6. (Mitch) Re-run PARTONS at mesh points [DONE]
    1. Plot difference of original mesh to re-evaluated mesh in Paraview: Squared Difference [DONE]
    2. Plot new values on original tessellation points

Week June 29 - July 3

  1. (O1) (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo
    1. Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|
    2. First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM
      1. In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:
        1. For discussion: Which variables to keep fixed, which variables to display
  2. (O2) (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography
    1. Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [Done]
      1. CNF Constained Mesher Prototype
    2. (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [TODO: Year 2021]
      1. In the PDR.PODM framework after the initial mesh construction each worker receives a part of the mesh and refines it. During initialization one essentially starts from a serialized version of the mesh (similar to reading a file) and populates internal data structures. After all, is set, PODM works as usual.
      2. The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information.
      3. Keeping vertex-based information means than we can get produce adaptive results using just information of the new weights skipping thus the creation of intermediate images.
      4. As a further (future) step this approach can enable an "always in memory mesh" where the data are always in memory and being accessed by a common API from each component of the pipeline.
  3. (O3) (Spiros/Mitch/Charles) Visualization
    1. (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D "slice" and then use ParaView to display results [TODO]
      1. Define what a 3D "slice" means in 4D space [TODO]
    2. (Mitch/Charles) Generate PARTON 4D and a 3D "slice" for these data, for validation of viz. [TODO]
      1. 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [TODO]
    3. (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [DONE]
  4. (O4) Integration with UVA and CNU
    1. Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?
    2. What is the status with UVA, are there any changes due to lack of additional funding?

Week July 6 - July 10

  1. (Spiros / Mitch) Adaptivity Metrics
    1. Using local denominator
      1. max-min / mean (Not working)
      2. rms / mean (Not working)
      3. Note: Local denominators are not working well because of the fact that they perform local normalization which results in uniform gradation, and therefore a uniform mesh
    2. Using no denominator
      1. max-min: Original Method
      2. Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.
    3. Using global denominator
      1. rms / globalMean (an idea which needs tweaking)
        1. Note: not bounded
      2. rms / globalRms (Possibly working)
        1. Note: not upper bounded [0, +oo)
      3. max-min / elementWeightRange
        1. Note: bounded [0, 1]
      4. Note: Global denominators work, and the weight-limit is normalized based on the given image.
    4. Metric Figures
    5. Useful Filter: StatisticsImageFilter

Week July 13 - July 17

  1. (Spiros/Mitch/Wirawan) Software Engineering Aspects for CNF Data Generation
    1. (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch's code) [DONE]
    2. (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [TODO]
  2. (Spiros/Mitch/Charles) Design of Smart LookUp Table Utilities
    1. (Mitch/Charles) Identify Requirements [TODO]
    2. (Spiros) Design a library that satisfies the requirements [TODO with a supplement]
  3. (Spiros) Design of a templated software, Monte Carlo Event Generator using a Tessellation [TODO with a supplement]
    1. Re-organize Gagik's 2D code, CMI, templated for 2-3-4 dimensions, improve the complexity of search for given cell weight (from linear to binary) and parallelization using OpenMP
  4. (Spiros) Sizing function Modifications:
    1. Change way of calculating value for sampling points
      1. Old version: assign the value of sampling point using to the closest pixel value
      2. New version: assign the value of sampling point using interpolation over the image [DONE]
      3. Reason of change: The problem with the old way of assigning values to the sampling points is that there is a high possibility of 2 or more sampling points having the same assigned value. I think that we can solve this issue by assigning values using interpolation to be sure that every sampling point would have a unique assigned value. This way we would need fewer elements to be able to capture the gradation.
    2. Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [DONE]
      1. Reason of change: this way we create larger elements in regions that are not of interest
  5. (Spiros/Kevin/Mitch) Results:
    1. (Spiros/Kevin) GPDGK16_uH_img (with new sizing function) [DONE]
      1. Mitch generated the data the previous week
    2. (Mitch) Generate a new tesselation with GPDGK16_uH_nxi_210 (with old sizing function) GPDGK16_uH_img_nxi=211 [DONE]
  6. (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section
    1. Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [DONE]
    2. Implement "acceptance rejection" algorithm from Tessellation & Interpolation document [DONE]
    3. VTK Interpolation
    4. Updated Document on Interpolation with Simplices: Tessellation & Interpolation document [DONE]
      1. Plot in ROOT CFF monte carlo events from tessellation [DONE]
      2. Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [TODO]
    5. (Spiros/Mitch) Add needed methods from Spiros's library Smart LookUp Table Utilities [TODO]
  7. (Mitch/Charles) Analyze CFF and Cross Section results
    1. Plot RMS deviation of cell points from CFF mesh
    2. Plot and fit t dependence of CFF at fixed value of Q2, calculate RMSD of fit, extract fit parameters
  8. (All) CNF Adaptivity Pipeline [DONE] and good progress toward "Smart Lookup Table"Photo_Mid_Report_July16_2020.png

Week July 20 - July 24

  1. (Spiros) Implementation of Smart LookUp Table Utilities [DONE]
  2. (Spiros) Interpolate Kevin's CDT3D meshes Box Folder [DONE]
  3. (Mitch) Make flow-chart explanation of "smart look-up table" and Monte Carlo code [1] [DONE]
    1. Write driver for point look-up [Done but needs testing]
  4. (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume
  5. (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations
    1. Using barycenter Media:CentroidError.png [DONE]
  6. (Mitch/Charles) Change of variables for CFF generation from: ξ-> XBj and t->t' . Reproduce mesh for new variables [DONE]

Week July 27 - July 31

  1. (Spiros) New version of CRTC_I2M docker file and documentation. [DONE]
    1. The Changes for PODM3D are:
      1. --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).
      2. (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.
      3. (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.
      4. (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.
  2. (Mitch) Generate tessellations in XBj and t' for imaginary and ln(real) parts of CFF using new PODM3D docker
    1. Plot interpolation error at the centroid
  3. (Mitch) Outline a code to compute DVCS cross-section
    1. Understand/modify the Bethe Heitler CS code
    2. Work through the Dirac algebra

Week Aug 3 - Aug 7

  1. (Spiros) Smart lookup table utilities [DONE]
    1. Get distance-based weight mean value of a point using k nearest points
  2. (Charles, Mitch) New sizing function S[f,g]
    1. f = Im[CFF], g = Re[CFF]
    2. for each simplex with points X(i) i=0,1,2,3, and functional values f(i), g(i)
    3. New variables: Log10(xBj), Sqrt[t']/(0.5 GeV), Log2(Q2)
  3. (Charles, Mitch) Competition to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package
    1. S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55 [2]
    2. Preprint ArXiv.org: [3]

Week Aug 10 - Aug 14

  1. (Spiros) Implement Sizing Functions with real and imaginary images [DONE]
    1. Element weight range based:
      1. elementWeightRangeF = abs(max(f) - min(f))
      2. elementWeightRangeG = abs(max(g) - min(g))
      3. Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG > 2 * elementWeightLimit
      4. Condition2: elementWeightRangeF / imageWeightRangeF > elementWeightLimit && elementWeightRangeG / imageWeightRangeG > elementWeightLimit
    2. Results: will be produced on the spot
  2. (Spiros) Efficient Monte Carlo Simulation using a Compton Form Factor Tessellation as a smart lookup table [DONE]
  3. (Spiros) Slice of 4D mesh
    1. Current implementation does not produce results with cells.
  4. (Mitch/Spiros) Update slides Look-up Table pipeline [4]
  5. (Mitch) Review the Foam event generator Foam
  6. (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)
    1. Uniform mesh of the ln(|real|) part and Gif of evolution of the ln(|real|) part
    2. Barycenter error

Week Aug 17 - Aug 21

  1. (All) Define the structure of the paper

Week Aug 24 - Aug 28

  1. (Spiros/Wirawan/John/Mitch) CNF Data Generation on Wahab
    1. (Wirawan/John/Spiros/) Sequentially
      1. (John) Set up a MySQL server on Wahab for partons [DONE]
      2. (Wirawan) Create a container with all the required dependencies [DONE]
      3. (Spiros) Set it up and test it [DONE]
    2. (Spiros/Mitch) In a distributed way
      1. (Spiros) Create the required tools to run everything in a distributed way [DONE]
      2. (Spiros) Test the ability to do it [DONE]
      3. Notes:
        1. (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.
        2. (Spiros) First implementation: split the kinematics dataset like. This way we create areas of kinematics.
          1. N0_0... N0_m-1,
          2. N1_0... N1_m-1,
          3. N2_0... N2_m-1,
          4. ...,
          5. Nn-1_0... Nn-1_m-1.
        3. (Spiros) Second implementation: split the kinematics dataset by creating chunks of size 1 until each kinematics dataset for each node is filled. This way all nodes will have points of similar kinematics. [DONE]
          1. N0_0, N1_0, N2_0 .. Nn-1_0,
          2. N0_1, N1_1, N2_1 .. Nn-1_1,
          3. N0_2, N1_2, N2_2 .. Nn-1_2,
          4. ...,
          5. N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1
    3. (Spiros) In a shared memory way:
      1. Executing multiple instances of the same program on the same node using CPU affinity to specify the CPU core that the process is going to utilize. [DONE]
    4. (Spiros) In a distributed + shared memory way:
      1. Create a script that runs partons in parallel using shared memory. [Done]
      2. Create a script that runs partons in parallel using distributed + shared memory. [Done]
    5. (Spiros) Speedup:
      1. File:partons-speedup.png
  1. (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.
    1. 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes
    2. Recalculate PARTONS values of vertices for each mesh
    3. Script to generate interpolation error histograms for each mesh
    4. 2D histogram of the standard deviations of each interpolation error histogram [TODO]

Week Aug 31 - Sept 3

  1. (Spiros) Synthetic 4D data [DONE]
    1. Create synthetic HyperCube and HyperSphere images
    2. Generate 4D uniform meshes out of the synthetic images
    3. Create a reader for the 4D meshes

Week Sept 7 - Sept 11

  1. (Mitch/Spiros) CNF Data Generation
    1. Fix Axis ordering. [DONE]
  2. (Spiros/Mitch) PartonsToNRRD
    1. Generate Images with spacing other than 1. [DONE]
  3. (Spiros) PODM3D
    1. Handle cnf images with spacing other than 1. [DONE]
    2. Create meshes inside well-defined geometric domain . [DONE]
  4. (Spiros) Smart lookup table utilities
    1. Get neighbors of a cell [DONE]
  5. (Spiros) Interesting paper
    1. Interpolation on Unstructured Tetrahedral Grids

Week Sept 28 - Oct 2

  1. (Spiros) Extend Monte Carlo Event Generation to work with negative values [DONE]
  2. (Spiros) Generate randomly uniform points inside a cell using: [DONE]
    1. Picking a Uniformly Random Point from an Arbitrary Simplex

TODO with a potential supplement

  1. (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion
    1. Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.
  2. (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..
  3. (Spiros/Nikos) Explore Christian's request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube

SURA CNF21 Project (C2020-FEMT-006-01)

Objectives

  • Close the adaptivity loop
  • Deliver Parallel (Distributed) PARTONS
  • Generate 4D tessellations on real data from PARTONS
  • Publish a paper for the 3D CFF approximation

Short-term Deliverables (6 months)

  1. (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [TODO]
  2. (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [TODO]
  3. (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [TODO]
  4. (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [TODO]
  5. (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [TODO]
  6. (Polykarpos/Christos/Spiros) Deliver preliminary data on Data Preservation and other issues related to CNF data and CFF approximations could be used as a case study (Sept 15)
  7. (All) work on the next proposals (Sept 30)

Weekly Reports

Week April 26 - May 2

  1. Using the interpolation error as the sizing function is the way to go to close the "loop" for the following reasons:
    1. Minimizes the amount of partons calculations needed to guarantee that the interpolation error within every cell is below <= error-threshold
    2. Minimizes the number of points/cells of the mesh. The benefits of this are:
      1. Fewer points/cells -> faster Monte Carlo Event Generation
      2. Fewer points/cells -> faster IO
    3. Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:
      1. Simpler model storage for the future database of CNF models
      2. Let's say that we create a mesh for each CFF and every mesh has 100k cells. So the total number of cells needed are: number of CFFs * 100k.
        Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.
      3. By splitting a cell that one CFF requires while another CFF does not, we create a mesh with a better error distribution than the one that would have if we did not split that cell.
      4. Additionally, for the Monte Carlo event generation step. If we were to create a random point within a domain, we would have to locate the cell in which this point lies into for every CFFs mesh (complexity = O (log (number of cells) * number of CFFs)).
        While we could just randomly create a point based on the volume of every cell, as we do it currently just for one CFF (complexity O(1)).
  2. The steps that we will describe in the paper that we tried to achieve the desired result (sufficient interpolation accuracy throughout every cell of a cell, with the minimum partons calculations) are:
    1. (Optional) Gagik's approach: he proposed to decimate a huge image (1,000,000 partons calculation) and then generate a tessellation that would capture the important features of the CFF described
      1. Pros:
        1. Predefined number of partons calculations
        2. Small mesh size
      2. Cons:
        1. Many Partons calculations
        2. No interpolation error guarantee
        3. Only for one CFF
    2. Create a dense enough uniform mesh in order to satisfy the desired interpolation accuracy
      1. Pros:
        1. Achieves the required interpolation accuracy
      2. Cons:
        1. Big mesh size
        2. Many Partons calculations
        3. You don't know how big your mesh should be
        4. Only for one CFF
    3. Create a mesh in an iterative fashion by adding random points to the mesh till you satisfy the desired interpolation accuracy
      1. Pros:
        1. Achieves the required interpolation accuracy
      2. Cons:
        1. Big mesh size
        2. Many Partons calculations
        3. Only for one CFF
    4. Create a mesh using the linear interpolation error as the sizing function
      1. Pros:
        1. Everything that was mentioned
      2. Cons:
        1. Maybe caching issues, but they are possibly insignificant since PODM is already really fast.

References

  1. Related Efforts
    1. Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package
      1. S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55 [5]
      2. Preprint ArXiv.org: [6]
  2. Examples for the Journal paper on "Smart Loolup Tables for MC"
    1. Computer Physics Communications: ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures
    2. Journal of Computational Physics: Physics motivated example paper on tessellations from Journal of Computational Physics
    3. Nature: Nature paper from JLab Nuclear Physics, PDF
    4. Other
      1. Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry
  3. Other papers
    1. Picking a Uniformly Random Point from an Arbitrary Simplex
    2. Interpolation on Unstructured Tetrahedral Grids
    3. n-Simplex Interpolation
    4. Quadratic Interpolation with Tetrahedra for 3D Scalar Fields
    5. A look-up table method based on unstructured grids and its application to non-ideal compressible fluid dynamic simulations
    6. Foam: A General-Purpose Cellular Monte Carlo Event Generator

Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only)