<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://crtc.cs.odu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Spyridon97</id>
	<title>crtc.cs.odu.edu - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://crtc.cs.odu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Spyridon97"/>
	<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/Special:Contributions/Spyridon97"/>
	<updated>2026-11-06T04:04:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.6</generator>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8482</id>
		<title>Internal:GPCD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8482"/>
		<updated>2021-06-08T17:38:48Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* (Spiros/Αngelos) Compute the Solvent Excluded Image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavities ===&lt;br /&gt;
Cavities are structural features of proteins and they are often important for drug discovery and design. There are different kinds of cavities, including pockets, voids, tunnels, and channels. The types of cavities are listed in more detail in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityTypes.jpg|center|frame| Figure 1: The basic types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Void&#039;&#039;&#039;: A cavity that looks like internal &amp;quot;hole&amp;quot; in a protein with no connection to the surface.&lt;br /&gt;
# &#039;&#039;&#039;Cleft&#039;&#039;&#039;: A pocket that looks like a &amp;quot;dent&amp;quot; in the surface of a protein. Can also be found as part of a tunnel or channel.&lt;br /&gt;
# &#039;&#039;&#039;Invagination&#039;&#039;&#039;: A pocket that looks like a &amp;quot;cove&amp;quot;. It has a small opening on the surface of a protein and leads to a larger interior. Can also be found as part of a tunnel or after a cleft.&lt;br /&gt;
# &#039;&#039;&#039;Tunnel&#039;&#039;&#039;: A pocket that has an opening on the surface of a protein and leads to somewhere in the interior. Has no opening on the other side.&lt;br /&gt;
# &#039;&#039;&#039;Channel&#039;&#039;&#039;: A cavity that has an opening on one side of the surface of a protein and leads to another opening in another location on the surface of the protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course, the types of cavities listed in figure 1 are only the basic ones. Combinations of these are also possible as shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityAdvancedTypes.jpg|center|frame| Figure 2: Combination types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavity Detection Methods ===&lt;br /&gt;
There are several methods for detecting protein cavities. There are sphere based methods, grid based methods, grid-and-sphere based methods, surface based methods, grid-and-surface based methods, time-varying methods, GPU based methods, consensus based methods, and finally tessellation based methods. These algorithms are shown in more detail in figure 3. Tessellation based methods mainly rely on Voronoi tessellation. Some methods rely on weighted Voronoi tessellation because of its ability to more accurately represent the volume of atoms. The Voronoi tessellation in these methods is computed from a set of points representing the atomic centers of the underlying protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityDetectionAlgorithms.jpg|center|frame| Figure 3: A hierarchy of protein cavity detection algorithms [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literature Review ==&lt;br /&gt;
&lt;br /&gt;
=== MOLE ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MOLE algorithm is specifically designed to identify tunnels and channels. Finding superficial cavities is a secondary concern and does so as part of the surface approximation step. MOLE utilizes the surface obtained by the refinement of the convex hull to find superficial cavities such as clefts and invaginations. In essence, the approximation of a more accurate surface and the detection of these superficial cavities are closely related. As tetrahedra are removed from the convex hull to get a more accurate surface approximation, a parameter called &#039;&#039;interior threshold&#039;&#039; controls how many superficial cavities are found. For example, if the number of tetrahedra removed from a specific part of the molecule exceeds this threshold, the algorithm marks these tetrahedra as part of a superficial cavity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:moleVoronoiTunnelPath.jpg|center|frame| Figure 4: Shows in 2D the Voronoi diagram (thin lines) and the convex hull (dotted line) of molecule represented by atoms (circles). Each Voronoi edge is evaluated by the cost function (numbers). The thick line represents the optimal path found by the Dijkstra&#039;s algorithm from the given starting point (black circle), i.e., centerline of found tunnel. [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the more complicated types of cavities, tunnels and channels, MOLE uses the Voronoi diagram to identify them. Start and end points are defined as the centers of the deepest tetrahedra in each cavity. The depth of the tetrahedron is defined as the number of Voronoi edges from the closest boundary tetrahedron (on the surface). Tunnels/channels are computed as the shortest paths between all pairs of start and end points in the same cavity diagram.&lt;br /&gt;
&lt;br /&gt;
[[File:MoleDijkstraWeightFunction.png|center|frame| Figure 5: Shows the weight function used to estimate the weight of each Voronoi edge for Dijkstra&#039;s algorihtm. l(e) is the length of the edge, d(e) is the distance of the edge to the closest atom Van der Waals sphere and ϵ is a small number to avoid division by zero [1]]]&lt;br /&gt;
&lt;br /&gt;
==== Complexity ====&lt;br /&gt;
* Worst-case: O(N^2 log N), where N is the number of atoms in the molecule. &lt;br /&gt;
* Average: O(M log M), where M is the number of vertices in the Voronoi diagram (in the worst case, M = N^2, but in most cases M = O(N)). As a result of the use of the incremental algorithm and Hilbert curve ordering, the complexity of calculating the Delaunay triangulation of most molecular structures is O(N log N). Finally, the complexity of all the remaining steps of the algorithm is at most O(M log M).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MolAxis ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MolAxis algorithm relies on Voronoi and Dijkstra&#039;s algorithm to find channels, similarly to MOLE. The algorithm consists of the following high-level steps:&lt;br /&gt;
&lt;br /&gt;
# Approximate the molecule using a collection of &#039;&#039;&#039;fixed-size spheres&#039;&#039;&#039;. The number of balls needed depends on the required quality of the approximation. In the extreme case, where the user is interested in a high resolution, each atom is approximated using a single sphere. &lt;br /&gt;
# Compute the &#039;&#039;&#039;Voronoi diagram&#039;&#039;&#039; of the centers of the fixed-sized spheres. The diagram is intersected with a user-defined bounding sphere. This defines the area of interest.&lt;br /&gt;
# Discard the parts of the Voronoi diagram that intersect the molecule.&lt;br /&gt;
# Define a &#039;&#039;&#039;graph&#039;&#039;&#039;, using the Voronoi vertices and edges. A weight is given to each edge, which depends on its length and on its distance from the surface of the molecule. &lt;br /&gt;
# Define a &#039;&#039;&#039;source point (root vertex)&#039;&#039;&#039;. The user can either supply a source point or allow MolAxis to automatically choose the source point to be the &#039;&#039;&#039;center of the largest cavity in the molecule&#039;&#039;&#039; (basically detect channels inside-out).&lt;br /&gt;
# Apply a shortest path optimization algorithm (&#039;&#039;&#039;Dijktra&#039;s algorithm&#039;&#039;&#039;) on the graph, computing a tree called the &amp;quot;corridor tree&amp;quot;.&lt;br /&gt;
# The desired channels are paths in the corridor tree. Duplicate channels are avoided by using the split distance parameter. The split distance bounds the distance to the least common ancestor of the channel and all previously reported channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MolAxisVoronoi.png|center|frame| Figure 6: Shows an example of fixed-size circles (light-blue) approximating varying-size circles and the pathway diagram of their centers. The discarded portion of the Voronoi diagram of their centers is depicted using dotted lines [2]. This figure also helps illustrate the usefulness of the Voronoi tessellation in computing pathways.]]&lt;br /&gt;
&lt;br /&gt;
== Protein Energetics ==&lt;br /&gt;
=== Metrics ===&lt;br /&gt;
# &#039;&#039;&#039;Hydrophobicity&#039;&#039;&#039;: Physical property of a molecule that is seemingly repelled from a mass of water. Hydrophilic molecules are attracted to water. Hydrophobicity plays a major role in protein folding. Hydrophobic molecules also tend to be nonpolar and prefer other neutral molecules and nonpolar solvents. Hydrophobicity is the most widely used metric.&lt;br /&gt;
# &#039;&#039;&#039;Hydrogen Bonds&#039;&#039;&#039;: Weak bonds between two molecules resulting from an electrostatic attraction between a proton in one molecule and an electronegative atom in the other. We often see these bonds between oxygen and hydrogen.&lt;br /&gt;
# &#039;&#039;&#039;Van der Waals Interactions&#039;&#039;&#039;: Also known as Van der Waals forces, they are forces driven by induced electrical interactions between two or more atoms or molecules that are very close to each other. Van der Waals interaction is the weakest of all intermolecular attractions between molecules. These forces are distance-dependent.&lt;br /&gt;
# &#039;&#039;&#039;Salt Bridges&#039;&#039;&#039;: Non-covalent (no sharing of eletrons; electromagnetic) interaction between two ionized sites. It has two components: a hydrogen bond and an electrostatic interaction.&lt;br /&gt;
# &#039;&#039;&#039;Disulfide Bridges&#039;&#039;&#039;: Strong bonds that can form between two cysteines (an amino acid). The strength of disulfide bridges helps stabilize a protein. Disulfide bridges are especially common in proteins that are secreted from cells.&lt;br /&gt;
# &#039;&#039;&#039;Charge&#039;&#039;&#039;: Plays a role in strength of bonds. A higher charge means that an atom will have stronger forces in an electromagnetic field.&lt;br /&gt;
# &#039;&#039;&#039;Polarity&#039;&#039;&#039;: Separation of electric charge leading to a molecule or its chemical groups having an electric dipole moment, with a negatively charged end and a positively charged end. Indicates the existence of polar bonds, which are covalent (sharing of electrons) and are quite strong. About [https://chem.libretexts.org/Bookshelves/Inorganic_Chemistry/Book%3A_Introduction_to_Inorganic_Chemistry/01%3A_Review_of_Chemical_Bonding/1.04%3A_Bond_Polarity_and_Bond_Strength bond polarity].&lt;br /&gt;
&lt;br /&gt;
== Candidate Method: Geometric Protein Cavities Detection (&#039;&#039;&#039;GPCD&#039;&#039;&#039;) ==&lt;br /&gt;
The Pipeline contains the following high-level algorithmic steps:&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Read protein ===&lt;br /&gt;
# Input: PDB file&lt;br /&gt;
# Output: A Polydata of the protein&lt;br /&gt;
# Algorithmic Step:&lt;br /&gt;
## (Angelos) Using vtkPDBReader, read the PDB file that included the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos) Upgrade vtkPDBReader to be able to manage multimodel proteins [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Fix vtkPDBReader error of setting wrong atom numbers [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Set up vtkPDBReader to utilize [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] for the Covalent radius and Van-der-Waals radius [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Improve [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] by using: [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### updated Van-der-Waals radius values provided by Los Alamos National Laboratory&lt;br /&gt;
### updated Covalent radius values provided by Cambridge Structural Database&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Extract unique protein Chains ===&lt;br /&gt;
# Input:  A Polydata of the protein&lt;br /&gt;
# Output: Unique protein chains without het-atoms and Symmetric Information&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a filter that removes the het-atoms and creates the polydata of the protein chains. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Detect the unique protein chains using Symmetry detection techniques ([https://en.wikipedia.org/wiki/Kabsch_algorithm Kabsch algorithm]) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Store the Symmetry information (rotation and translation). [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: This way we can mesh each unique chain individually&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Sort Atoms By Radius ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms&lt;br /&gt;
# Output: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using vtkSortFieldData we sort the non-Het atoms by radius in descending order. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed using vtkSMPTools [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Αngelos) Compute the Solvent Excluded Image ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order, probe radius, spacing&lt;br /&gt;
# Output: Solvent Excluded Image of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros) Calculate the optimal bounding box of the protein chain using CGAL&#039;s implementation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Angelos) Create the Solvent Accessible image by creating spheres for each atom that their radius is: Van der Waals radius + probe radius. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos) Perform Euclidean Distance Transform on the Solvent Accessible image using the &#039;&#039;&#039;itk::SignedMaurerDistanceMapImageFilter&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
## (Spiros) Extract Solvent Excluded image from the EDT result by setting: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### All pixel values &amp;lt; probe-radius = 0&lt;br /&gt;
### All pixel values &amp;gt;= probe-radius = 1&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros) Handle the calculation of atom type with the greatest VDW radius in a thread-safe way by sorting the atoms by radius in descending order [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Close holes that should not exist using the distance of the pixel point vs the actual atom [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Create smaller images using the concept that is described in the EDTSurf paper [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Compute the Solvent Excluded Surface (&#039;&#039;&#039;SES&#039;&#039;&#039;)===&lt;br /&gt;
# Input: Solvent Excluded Image of a chain&lt;br /&gt;
# Output: Solvent Excluded Surface of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, produce a volumetric mesh of the image. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, extract the volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;vtkDataSetSurfaceFilter&#039;&#039;&#039;, extract the surface of volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039; this filter is used because when PODM is extracting the surface, its triangles are oriented the wrong way.&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Advantages:&lt;br /&gt;
## Can control the number of elements on the surface&lt;br /&gt;
## the edge lengths bounds are relatively small which helps in the clustering.&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Select a default delta value. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fix volume grading crashing. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Surface needs to be smoothed. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Extract Atom Types of surface points ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain surface and a Polydata of the unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Output: Atom Types of surface points of the unique protein chain surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using a KD-tree, for each surface point, find the closest atom: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If the surface point is within the radius of the closest atom, assign the atom type of the closest point to the surface point&lt;br /&gt;
### Else, assign &#039;&#039;&#039;0&#039;&#039;&#039;, which means the surface point is part of the re-entrance surface.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Find an ideal offset distance value between the surface points and their closest atoms to improve accuracy. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Generate the Symmetric Protein chain surfaces ===&lt;br /&gt;
# Input: A vector of the unique protein chain surfaces and the Symmetry information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;SymmetricProteinChainsSurface&#039;&#039;&#039; filter that generates the non unique protein chain surfaces using the Symmetry information. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Assign Model and Chain arrays on SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces &amp;amp; model and chains information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;AssignModelAndChain&#039;&#039;&#039; filter that assigns the model and chain arrays for each protein chain surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Merge Protein Chain SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Output: Solvent Excluded Surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;MergeSurfaces&#039;&#039;&#039; filter that merges all the protein-chains surfaces into one and forms the solvent excluded surface of the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Compute ambient occlusion of the SES === &lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Ambient Occlusion values of surface points, normals of surface points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos/Spiros) Using IGL Library, which uses [https://www.embree.org/ Embree] and [https://eigen.tuxfamily.org/dox/ Eigen], calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Using the CUDA and Optix library, calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: GPU parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros/Angelos) Eliminate the noise that is created due to the non-smoothed &#039;&#039;&#039;PODM3D&#039;&#039;&#039; surface by assigning for each vertex the average ambient occlusion value of its neighbors + itself. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Use the symmetry information to minimize the memory footprint for CPU and GPU [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Compute Surface Statistics ===&lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Statistics of Surface Triangles&#039; Edges&lt;br /&gt;
# Algoritmic step:&lt;br /&gt;
## Compute min/mean/median/max edge lengths of the surface triangles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Cavity Detection ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Ambient Occlusion values of surface points, Surface Statistics&lt;br /&gt;
# Output: Protein Cavities&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a modified version of the clustering method &#039;&#039;&#039;DBSCAN&#039;&#039;&#039;, that finds neighbors based on their density &#039;&#039;&#039;and&#039;&#039;&#039; ambient occlusion values, form clusters that define protein cavities. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Idea 1: [https://link.springer.com/article/10.1023/A:1009884809343 A Fast Parallel Clustering Algorithm for Large Spatial Databases PDBSCAN]&lt;br /&gt;
#### Idea 2: Speculative Execution using &#039;&#039;&#039;PREMA&#039;&#039;&#039;&lt;br /&gt;
## (Angelos) Implement a rendering framework to visualize the clustering process using &#039;&#039;&#039;VTK&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Tune the clustering parameters:&lt;br /&gt;
### (Spiros) Search-radius = 2 * minEdgeLength of the surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Esp = 8. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Min cavity size = cavityFactor * delta^-2.178. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Default value of cavityFactor = 20.&lt;br /&gt;
## Limit the expansion of the cavity by using: &lt;br /&gt;
### (Spiros) A relative threshold for the difference an occlusion value from the average occlusion value of the cluster. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Define weights for the occlusion values, and convert the mean to a weighted mean. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Define occlusion values bounds to detect different types of cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## [https://dl.acm.org/doi/abs/10.1145/304181.304187 OPTICS: ordering points to identify the clustering structure] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Use symmetry information to quickly detect the per-model cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Angelos) Map Electrostatics Potentials on Surface Points ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Electrostatic Potentials Image &#039;&#039;&#039;ESP&#039;&#039;&#039; of [http://www.poissonboltzmann.org/ APBS], normals of surface points, probe radius, lowerThreshold-upperThreshold&lt;br /&gt;
# Output: Electrostatic values of surface points&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros/Angelos) For each surface point: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Scale the point using normals, and probe radius to the solvent-accessible surface, &lt;br /&gt;
### Get the value of the closest pixel from the &#039;&#039;&#039;ESP&#039;&#039;&#039; to the scaled point:&lt;br /&gt;
#### If value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
#### Else if, value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
#### Else get the interpolated value of the scaled points from the image:&lt;br /&gt;
##### If interpolated value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
##### Else if, interpolated value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos/Spiros) Create reader of the [https://www.ics.uci.edu/~dock/manuals/apbs/html/user-guide/x2674.html OpenDx] file format that is used as output by APBS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Select Clustered cavity points ===&lt;br /&gt;
# Input: Labeled Solvent Surface Surface&lt;br /&gt;
# Output: Labeled clustered cavity points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a SelectPoints filter. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Select only the points that are clustered at the cavity detection step. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: this is done to improve the speed of writing the output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Write Results:  ===&lt;br /&gt;
# Input: Labeled clustered cavity points or Labeled Solvent Surface Surface&lt;br /&gt;
# Output: solventSurface.vtp&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a vtkXMLPolyDataWriter, write the output file. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Create a writer, just for the cavities to minimize the IO. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Idea: See &#039;&#039;&#039;Fpocket&#039;&#039;&#039;.&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Note: a Paraview plugin may be developed for visualization purposes. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Classify cavity type ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Atomic Cavities, Atom Types of surface points&lt;br /&gt;
# Output: Labeled atomic Cavities&lt;br /&gt;
# Algorithm steps:&lt;br /&gt;
# Ideas that might be used: &lt;br /&gt;
## Ambient occlusion values based classification using mean distance cluster value [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Analyze the shape of clusters to identify what type of cavity they are. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### This can potentially be done using machine learning.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== GPCD vs MOLE ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| GPCD&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| MOLE&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Surface Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Interior Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Visualize Exact Channel Shape&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Very Large Molecules&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO (very slow)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Multi-Model Files&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Parallelization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Relative Performance&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | VERY FAST&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | SLOW&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Intuitive Visualization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| False Positives&lt;br /&gt;
| style=&amp;quot;background-color: orange; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Quantify Major Structural Features&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Paper and Presenation ==&lt;br /&gt;
# [https://docs.google.com/presentation/d/1rYKfxhgCc9oUKI3xEZ0gLZQOapG64C2-6hNvoDtdpXY/edit?usp=sharing Presentation]&lt;br /&gt;
# [https://www.overleaf.com/3442949237tvggkctnjdbj Paper]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rbvi.ucsf.edu/chimerax/ UCSF ChimeraX]&#039;&#039;&#039;: Next-generation molecular visualization program from the Resource for Biocomputing, Visualization, and Informatics (RBVI).&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/vmd/ VMD]&#039;&#039;&#039;: Molecular visualization program for displaying, animating, and analyzing large biomolecular systems using 3D graphics and built-in scripting. Used in conjunction with NAMD for visualizing molecular dynamics simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/namd/ NAMD]&#039;&#039;&#039;: Parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. Scales to hundreds of cores for typical simulations and beyond 500,000 cores for the largest simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/Platform/App/Mole MOLE]&#039;&#039;&#039;: Universal toolkit for rapid location and characterization of channels and pores in biomacromolecules.&lt;br /&gt;
* &#039;&#039;&#039;[https://caver.cz/ CAVER]&#039;&#039;&#039;: Software tool for the analysis and visualization of tunnels and channels in protein structures.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/ RCSB PDB Protein Data Bank]&#039;&#039;&#039;: The largest and most popular database of protein structures.&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5839519/ Survey: Geometric Protein Cavity Detection Algorithms]&#039;&#039;&#039;: Paper surveying the current geometric algorithms for protein cavity detection. This is a great resource for understanding this project.&lt;br /&gt;
* &#039;&#039;&#039;[https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-39 MOLE 2.0]&#039;&#039;&#039;: Paper describing the MOLE 2.0 protein cavity detection software. Contains a good algorithm that can be used for extracting a good approximation of the surface of a point cloud of atoms.&lt;br /&gt;
* &#039;&#039;&#039;[https://reader.elsevier.com/reader/sd/pii/S0969212607003759?token=4D0F6192E971D4406E8F7CBA047B0490C8715EBD67579D26427E0E63BD0298BEBF948DB238A28E4EAE2D17EBC6DF4E50 MOLE 1.0]&#039;&#039;&#039;: Paper describing the MOLE 1.0 algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/epdf/10.1002/prot.22052 MolAxis]&#039;&#039;&#039;: Paper describing the MolAxis protein cavity detection software.&lt;br /&gt;
* &#039;&#039;&#039;[https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002708 CAVER 3.0]&#039;&#039;&#039;: Paper describing the CAVER 3.0 protein cavity detection software. This algorithm specializes in identifying tunnels.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.sciencedirect.com/science/article/abs/pii/S0022283606008746 Travel Depth]&#039;&#039;&#039;: Paper describing the &amp;quot;travel depth&amp;quot; algorithm for protein cavity visualization.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/full/10.1111/cgf.12120 GPU Protein Cavity Detection using Ambient Occlusion]&#039;&#039;&#039;: Paper describing a GPU-based protein cavity detection algorithm that utilizes Ambient Occlusion.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf DBSCAN]&#039;&#039;&#039;: Paper describing the DBSCAN clustering algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://link.springer.com/article/10.1023/A:1009884809343 PDBSCAN]&#039;&#039;&#039;: Paper describing a parallel version of DBSCAN.&lt;br /&gt;
* &#039;&#039;&#039;[https://pubmed.ncbi.nlm.nih.gov/31133031/ Coronavirus envelope protein]&#039;&#039;&#039;: Paper describing research on the envelope protein of coronaviruses.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.cell.com/biophysj/fulltext/S0006-3495(20)33168-4 COVID-19 virion model]&#039;&#039;&#039;: Paper describing a detail model of the SARS-CoV-2 virus particle.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7685317/pdf/nihpp-2020.11.19.390187.pdf COVID-19 simulation]&#039;&#039;&#039;: Paper describing large-scale COVID-19 simulations.&lt;br /&gt;
&lt;br /&gt;
=== Organizations/Groups ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/ University of Illinois at Urbana-Champaign: Theoretical and Computational Biophysics Group]&#039;&#039;&#039;: Perhaps the most important group in molecular dynamics. Developers of VMD and NAMD. Ran the simulation for the 200 million atom model of COVID-19.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/ Oak Ridge National Laboratory (ORNL)]&#039;&#039;&#039;: Major national lab with active involvement in drug discovery and design using supercomputers.&lt;br /&gt;
* &#039;&#039;&#039;[http://rbvi.ucsf.edu/ Resource for Biocomputing, Visualization, and Informatics (RBVI)]&#039;&#039;&#039;: Developers of UCSF Chimera and UCSF ChimeraX.&lt;br /&gt;
* &#039;&#039;&#039;[https://ist.ac.at/en/research/edelsbrunner-group/ IST Austria: Edelsbrunner Group]&#039;&#039;&#039;: Important group in algorithms, computational geometry, and computational topology. Involved with protein cavity detection in the past and potentially involved now. The head of the group, Edelsbrunner created alpha shapes.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tacc.utexas.edu/systems/frontera Texas Advanced Computing Center]&#039;&#039;&#039;: Maintainers of the Frontera supercomputer, the fifth fastest supercomputer in the world (2020). The simulation for the 200 million atom model of COVID-19 was executed on this supercomputer.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/ WebChemistry]&#039;&#039;&#039;: Developed MOLE and many other software tools related to molecular analysis.&lt;br /&gt;
&lt;br /&gt;
=== Important Links ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.hpcwire.com/off-the-wire/coronavirus-massive-simulations-completed-on-frontera-supercomputer/ COVID-19 200 million atom NAMD simulation]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/news/early-research-existing-drug-compounds-supercomputing-could-combat-coronavirus/ ORNL COVID-19 spike drug identification]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Proteins ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/1jj2 Large Ribosomal Subunit (98,693 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VXX COVID-19 Spike Glycoprotein, Closed State (23,694 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6Y2E COVID-19 Main Protease (5,370 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VWW COVID-19 NSP15 Endoribonuclease (24,036 atoms)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] Simões, T., Lopes, D., Dias, S., Fernandes, F., Pereira, J., Jorge, J., Bajaj, C., &amp;amp; Gomes, A. (2017). Geometric Detection Algorithms for Cavities on Protein Surfaces in Molecular Graphics: A Survey. Computer graphics forum : journal of the European Association for Computer Graphics, 36(8), 643–683. https://doi.org/10.1111/cgf.13158&lt;br /&gt;
&lt;br /&gt;
[2] Yaffe, Fishelovitch, Wolfson, Halperin, &amp;amp; Nussinov. (2008). MolAxis: Efficient and accurate identification of channels in macromolecules. Proteins: Structure, Function, and Bioinformatics, 73(1), 72-86.&lt;br /&gt;
&lt;br /&gt;
[3] Coleman, R. G., &amp;amp; Sharp, K. A. (2006). Travel depth, a new shape descriptor for macromolecules: application to ligand binding. Journal of molecular biology, 362(3), 441–458. https://doi.org/10.1016/j.jmb.2006.07.022&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8481</id>
		<title>Internal:GPCD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8481"/>
		<updated>2021-06-03T17:41:59Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Paper and Presenation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavities ===&lt;br /&gt;
Cavities are structural features of proteins and they are often important for drug discovery and design. There are different kinds of cavities, including pockets, voids, tunnels, and channels. The types of cavities are listed in more detail in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityTypes.jpg|center|frame| Figure 1: The basic types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Void&#039;&#039;&#039;: A cavity that looks like internal &amp;quot;hole&amp;quot; in a protein with no connection to the surface.&lt;br /&gt;
# &#039;&#039;&#039;Cleft&#039;&#039;&#039;: A pocket that looks like a &amp;quot;dent&amp;quot; in the surface of a protein. Can also be found as part of a tunnel or channel.&lt;br /&gt;
# &#039;&#039;&#039;Invagination&#039;&#039;&#039;: A pocket that looks like a &amp;quot;cove&amp;quot;. It has a small opening on the surface of a protein and leads to a larger interior. Can also be found as part of a tunnel or after a cleft.&lt;br /&gt;
# &#039;&#039;&#039;Tunnel&#039;&#039;&#039;: A pocket that has an opening on the surface of a protein and leads to somewhere in the interior. Has no opening on the other side.&lt;br /&gt;
# &#039;&#039;&#039;Channel&#039;&#039;&#039;: A cavity that has an opening on one side of the surface of a protein and leads to another opening in another location on the surface of the protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course, the types of cavities listed in figure 1 are only the basic ones. Combinations of these are also possible as shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityAdvancedTypes.jpg|center|frame| Figure 2: Combination types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavity Detection Methods ===&lt;br /&gt;
There are several methods for detecting protein cavities. There are sphere based methods, grid based methods, grid-and-sphere based methods, surface based methods, grid-and-surface based methods, time-varying methods, GPU based methods, consensus based methods, and finally tessellation based methods. These algorithms are shown in more detail in figure 3. Tessellation based methods mainly rely on Voronoi tessellation. Some methods rely on weighted Voronoi tessellation because of its ability to more accurately represent the volume of atoms. The Voronoi tessellation in these methods is computed from a set of points representing the atomic centers of the underlying protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityDetectionAlgorithms.jpg|center|frame| Figure 3: A hierarchy of protein cavity detection algorithms [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literature Review ==&lt;br /&gt;
&lt;br /&gt;
=== MOLE ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MOLE algorithm is specifically designed to identify tunnels and channels. Finding superficial cavities is a secondary concern and does so as part of the surface approximation step. MOLE utilizes the surface obtained by the refinement of the convex hull to find superficial cavities such as clefts and invaginations. In essence, the approximation of a more accurate surface and the detection of these superficial cavities are closely related. As tetrahedra are removed from the convex hull to get a more accurate surface approximation, a parameter called &#039;&#039;interior threshold&#039;&#039; controls how many superficial cavities are found. For example, if the number of tetrahedra removed from a specific part of the molecule exceeds this threshold, the algorithm marks these tetrahedra as part of a superficial cavity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:moleVoronoiTunnelPath.jpg|center|frame| Figure 4: Shows in 2D the Voronoi diagram (thin lines) and the convex hull (dotted line) of molecule represented by atoms (circles). Each Voronoi edge is evaluated by the cost function (numbers). The thick line represents the optimal path found by the Dijkstra&#039;s algorithm from the given starting point (black circle), i.e., centerline of found tunnel. [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the more complicated types of cavities, tunnels and channels, MOLE uses the Voronoi diagram to identify them. Start and end points are defined as the centers of the deepest tetrahedra in each cavity. The depth of the tetrahedron is defined as the number of Voronoi edges from the closest boundary tetrahedron (on the surface). Tunnels/channels are computed as the shortest paths between all pairs of start and end points in the same cavity diagram.&lt;br /&gt;
&lt;br /&gt;
[[File:MoleDijkstraWeightFunction.png|center|frame| Figure 5: Shows the weight function used to estimate the weight of each Voronoi edge for Dijkstra&#039;s algorihtm. l(e) is the length of the edge, d(e) is the distance of the edge to the closest atom Van der Waals sphere and ϵ is a small number to avoid division by zero [1]]]&lt;br /&gt;
&lt;br /&gt;
==== Complexity ====&lt;br /&gt;
* Worst-case: O(N^2 log N), where N is the number of atoms in the molecule. &lt;br /&gt;
* Average: O(M log M), where M is the number of vertices in the Voronoi diagram (in the worst case, M = N^2, but in most cases M = O(N)). As a result of the use of the incremental algorithm and Hilbert curve ordering, the complexity of calculating the Delaunay triangulation of most molecular structures is O(N log N). Finally, the complexity of all the remaining steps of the algorithm is at most O(M log M).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MolAxis ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MolAxis algorithm relies on Voronoi and Dijkstra&#039;s algorithm to find channels, similarly to MOLE. The algorithm consists of the following high-level steps:&lt;br /&gt;
&lt;br /&gt;
# Approximate the molecule using a collection of &#039;&#039;&#039;fixed-size spheres&#039;&#039;&#039;. The number of balls needed depends on the required quality of the approximation. In the extreme case, where the user is interested in a high resolution, each atom is approximated using a single sphere. &lt;br /&gt;
# Compute the &#039;&#039;&#039;Voronoi diagram&#039;&#039;&#039; of the centers of the fixed-sized spheres. The diagram is intersected with a user-defined bounding sphere. This defines the area of interest.&lt;br /&gt;
# Discard the parts of the Voronoi diagram that intersect the molecule.&lt;br /&gt;
# Define a &#039;&#039;&#039;graph&#039;&#039;&#039;, using the Voronoi vertices and edges. A weight is given to each edge, which depends on its length and on its distance from the surface of the molecule. &lt;br /&gt;
# Define a &#039;&#039;&#039;source point (root vertex)&#039;&#039;&#039;. The user can either supply a source point or allow MolAxis to automatically choose the source point to be the &#039;&#039;&#039;center of the largest cavity in the molecule&#039;&#039;&#039; (basically detect channels inside-out).&lt;br /&gt;
# Apply a shortest path optimization algorithm (&#039;&#039;&#039;Dijktra&#039;s algorithm&#039;&#039;&#039;) on the graph, computing a tree called the &amp;quot;corridor tree&amp;quot;.&lt;br /&gt;
# The desired channels are paths in the corridor tree. Duplicate channels are avoided by using the split distance parameter. The split distance bounds the distance to the least common ancestor of the channel and all previously reported channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MolAxisVoronoi.png|center|frame| Figure 6: Shows an example of fixed-size circles (light-blue) approximating varying-size circles and the pathway diagram of their centers. The discarded portion of the Voronoi diagram of their centers is depicted using dotted lines [2]. This figure also helps illustrate the usefulness of the Voronoi tessellation in computing pathways.]]&lt;br /&gt;
&lt;br /&gt;
== Protein Energetics ==&lt;br /&gt;
=== Metrics ===&lt;br /&gt;
# &#039;&#039;&#039;Hydrophobicity&#039;&#039;&#039;: Physical property of a molecule that is seemingly repelled from a mass of water. Hydrophilic molecules are attracted to water. Hydrophobicity plays a major role in protein folding. Hydrophobic molecules also tend to be nonpolar and prefer other neutral molecules and nonpolar solvents. Hydrophobicity is the most widely used metric.&lt;br /&gt;
# &#039;&#039;&#039;Hydrogen Bonds&#039;&#039;&#039;: Weak bonds between two molecules resulting from an electrostatic attraction between a proton in one molecule and an electronegative atom in the other. We often see these bonds between oxygen and hydrogen.&lt;br /&gt;
# &#039;&#039;&#039;Van der Waals Interactions&#039;&#039;&#039;: Also known as Van der Waals forces, they are forces driven by induced electrical interactions between two or more atoms or molecules that are very close to each other. Van der Waals interaction is the weakest of all intermolecular attractions between molecules. These forces are distance-dependent.&lt;br /&gt;
# &#039;&#039;&#039;Salt Bridges&#039;&#039;&#039;: Non-covalent (no sharing of eletrons; electromagnetic) interaction between two ionized sites. It has two components: a hydrogen bond and an electrostatic interaction.&lt;br /&gt;
# &#039;&#039;&#039;Disulfide Bridges&#039;&#039;&#039;: Strong bonds that can form between two cysteines (an amino acid). The strength of disulfide bridges helps stabilize a protein. Disulfide bridges are especially common in proteins that are secreted from cells.&lt;br /&gt;
# &#039;&#039;&#039;Charge&#039;&#039;&#039;: Plays a role in strength of bonds. A higher charge means that an atom will have stronger forces in an electromagnetic field.&lt;br /&gt;
# &#039;&#039;&#039;Polarity&#039;&#039;&#039;: Separation of electric charge leading to a molecule or its chemical groups having an electric dipole moment, with a negatively charged end and a positively charged end. Indicates the existence of polar bonds, which are covalent (sharing of electrons) and are quite strong. About [https://chem.libretexts.org/Bookshelves/Inorganic_Chemistry/Book%3A_Introduction_to_Inorganic_Chemistry/01%3A_Review_of_Chemical_Bonding/1.04%3A_Bond_Polarity_and_Bond_Strength bond polarity].&lt;br /&gt;
&lt;br /&gt;
== Candidate Method: Geometric Protein Cavities Detection (&#039;&#039;&#039;GPCD&#039;&#039;&#039;) ==&lt;br /&gt;
The Pipeline contains the following high-level algorithmic steps:&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Read protein ===&lt;br /&gt;
# Input: PDB file&lt;br /&gt;
# Output: A Polydata of the protein&lt;br /&gt;
# Algorithmic Step:&lt;br /&gt;
## (Angelos) Using vtkPDBReader, read the PDB file that included the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos) Upgrade vtkPDBReader to be able to manage multimodel proteins [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Fix vtkPDBReader error of setting wrong atom numbers [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Set up vtkPDBReader to utilize [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] for the Covalent radius and Van-der-Waals radius [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Improve [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] by using: [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### updated Van-der-Waals radius values provided by Los Alamos National Laboratory&lt;br /&gt;
### updated Covalent radius values provided by Cambridge Structural Database&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Extract unique protein Chains ===&lt;br /&gt;
# Input:  A Polydata of the protein&lt;br /&gt;
# Output: Unique protein chains without het-atoms and Symmetric Information&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a filter that removes the het-atoms and creates the polydata of the protein chains. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Detect the unique protein chains using Symmetry detection techniques ([https://en.wikipedia.org/wiki/Kabsch_algorithm Kabsch algorithm]) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Store the Symmetry information (rotation and translation). [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: This way we can mesh each unique chain individually&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Sort Atoms By Radius ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms&lt;br /&gt;
# Output: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using vtkSortFieldData we sort the non-Het atoms by radius in descending order. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed using vtkSMPTools [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Αngelos) Compute the Solvent Excluded Image ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order, probe radius, spacing&lt;br /&gt;
# Output: Solvent Excluded Image of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros) Calculate the optimal bounding box of the protein chain using CGAL&#039;s implementation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Angelos) Create the Solvent Accessible image by creating spheres for each atom that their radius is: Van der Waals radius + probe radius. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos) Perform Euclidean Distance Transform on the Solvent Accessible image using the &#039;&#039;&#039;itk::SignedMaurerDistanceMapImageFilter&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
## (Spiros) Extract Solvent Excluded image from the EDT result by setting: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### All pixel values &amp;lt; probe-radius - truncationError[atomType] - paddingDistance = 0&lt;br /&gt;
### All pixel values &amp;gt;= probe-radius - truncationError[atomType] - paddingDistance = 1&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros) Handle the calculation of truncationError[atomType] in a thread-safe way by sorting the atoms by radius in descending order [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Truncation error is caused because of the spacing of the image.&lt;br /&gt;
## (Spiros/Angelos) Select a paddingDistance value to help PODM3D produce an accurate surface [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Close holes that should not exist using the distance of the pixel point vs the actual atom [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Create smaller images using the concept that is described in the EDTSurf paper [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Compute the Solvent Excluded Surface (&#039;&#039;&#039;SES&#039;&#039;&#039;)===&lt;br /&gt;
# Input: Solvent Excluded Image of a chain&lt;br /&gt;
# Output: Solvent Excluded Surface of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, produce a volumetric mesh of the image. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, extract the volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;vtkDataSetSurfaceFilter&#039;&#039;&#039;, extract the surface of volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039; this filter is used because when PODM is extracting the surface, its triangles are oriented the wrong way.&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Advantages:&lt;br /&gt;
## Can control the number of elements on the surface&lt;br /&gt;
## the edge lengths bounds are relatively small which helps in the clustering.&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Select a default delta value. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fix volume grading crashing. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Surface needs to be smoothed. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Extract Atom Types of surface points ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain surface and a Polydata of the unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Output: Atom Types of surface points of the unique protein chain surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using a KD-tree, for each surface point, find the closest atom: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If the surface point is within the radius of the closest atom, assign the atom type of the closest point to the surface point&lt;br /&gt;
### Else, assign &#039;&#039;&#039;0&#039;&#039;&#039;, which means the surface point is part of the re-entrance surface.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Find an ideal offset distance value between the surface points and their closest atoms to improve accuracy. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Generate the Symmetric Protein chain surfaces ===&lt;br /&gt;
# Input: A vector of the unique protein chain surfaces and the Symmetry information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;SymmetricProteinChainsSurface&#039;&#039;&#039; filter that generates the non unique protein chain surfaces using the Symmetry information. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Assign Model and Chain arrays on SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces &amp;amp; model and chains information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;AssignModelAndChain&#039;&#039;&#039; filter that assigns the model and chain arrays for each protein chain surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Merge Protein Chain SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Output: Solvent Excluded Surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;MergeSurfaces&#039;&#039;&#039; filter that merges all the protein-chains surfaces into one and forms the solvent excluded surface of the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Compute ambient occlusion of the SES === &lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Ambient Occlusion values of surface points, normals of surface points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos/Spiros) Using IGL Library, which uses [https://www.embree.org/ Embree] and [https://eigen.tuxfamily.org/dox/ Eigen], calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Using the CUDA and Optix library, calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: GPU parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros/Angelos) Eliminate the noise that is created due to the non-smoothed &#039;&#039;&#039;PODM3D&#039;&#039;&#039; surface by assigning for each vertex the average ambient occlusion value of its neighbors + itself. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Use the symmetry information to minimize the memory footprint for CPU and GPU [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Compute Surface Statistics ===&lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Statistics of Surface Triangles&#039; Edges&lt;br /&gt;
# Algoritmic step:&lt;br /&gt;
## Compute min/mean/median/max edge lengths of the surface triangles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Cavity Detection ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Ambient Occlusion values of surface points, Surface Statistics&lt;br /&gt;
# Output: Protein Cavities&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a modified version of the clustering method &#039;&#039;&#039;DBSCAN&#039;&#039;&#039;, that finds neighbors based on their density &#039;&#039;&#039;and&#039;&#039;&#039; ambient occlusion values, form clusters that define protein cavities. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Idea 1: [https://link.springer.com/article/10.1023/A:1009884809343 A Fast Parallel Clustering Algorithm for Large Spatial Databases PDBSCAN]&lt;br /&gt;
#### Idea 2: Speculative Execution using &#039;&#039;&#039;PREMA&#039;&#039;&#039;&lt;br /&gt;
## (Angelos) Implement a rendering framework to visualize the clustering process using &#039;&#039;&#039;VTK&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Tune the clustering parameters:&lt;br /&gt;
### (Spiros) Search-radius = 2 * minEdgeLength of the surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Esp = 8. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Min cavity size = cavityFactor * delta^-2.178. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Default value of cavityFactor = 20.&lt;br /&gt;
## Limit the expansion of the cavity by using: &lt;br /&gt;
### (Spiros) A relative threshold for the difference an occlusion value from the average occlusion value of the cluster. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Define weights for the occlusion values, and convert the mean to a weighted mean. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Define occlusion values bounds to detect different types of cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## [https://dl.acm.org/doi/abs/10.1145/304181.304187 OPTICS: ordering points to identify the clustering structure] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Use symmetry information to quickly detect the per-model cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Angelos) Map Electrostatics Potentials on Surface Points ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Electrostatic Potentials Image &#039;&#039;&#039;ESP&#039;&#039;&#039; of [http://www.poissonboltzmann.org/ APBS], normals of surface points, probe radius, lowerThreshold-upperThreshold&lt;br /&gt;
# Output: Electrostatic values of surface points&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros/Angelos) For each surface point: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Scale the point using normals, and probe radius to the solvent-accessible surface, &lt;br /&gt;
### Get the value of the closest pixel from the &#039;&#039;&#039;ESP&#039;&#039;&#039; to the scaled point:&lt;br /&gt;
#### If value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
#### Else if, value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
#### Else get the interpolated value of the scaled points from the image:&lt;br /&gt;
##### If interpolated value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
##### Else if, interpolated value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos/Spiros) Create reader of the [https://www.ics.uci.edu/~dock/manuals/apbs/html/user-guide/x2674.html OpenDx] file format that is used as output by APBS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Select Clustered cavity points ===&lt;br /&gt;
# Input: Labeled Solvent Surface Surface&lt;br /&gt;
# Output: Labeled clustered cavity points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a SelectPoints filter. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Select only the points that are clustered at the cavity detection step. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: this is done to improve the speed of writing the output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Write Results:  ===&lt;br /&gt;
# Input: Labeled clustered cavity points or Labeled Solvent Surface Surface&lt;br /&gt;
# Output: solventSurface.vtp&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a vtkXMLPolyDataWriter, write the output file. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Create a writer, just for the cavities to minimize the IO. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Idea: See &#039;&#039;&#039;Fpocket&#039;&#039;&#039;.&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Note: a Paraview plugin may be developed for visualization purposes. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Classify cavity type ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Atomic Cavities, Atom Types of surface points&lt;br /&gt;
# Output: Labeled atomic Cavities&lt;br /&gt;
# Algorithm steps:&lt;br /&gt;
# Ideas that might be used: &lt;br /&gt;
## Ambient occlusion values based classification using mean distance cluster value [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Analyze the shape of clusters to identify what type of cavity they are. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### This can potentially be done using machine learning.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== GPCD vs MOLE ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| GPCD&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| MOLE&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Surface Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Interior Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Visualize Exact Channel Shape&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Very Large Molecules&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO (very slow)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Multi-Model Files&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Parallelization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Relative Performance&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | VERY FAST&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | SLOW&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Intuitive Visualization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| False Positives&lt;br /&gt;
| style=&amp;quot;background-color: orange; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Quantify Major Structural Features&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Paper and Presenation ==&lt;br /&gt;
# [https://docs.google.com/presentation/d/1rYKfxhgCc9oUKI3xEZ0gLZQOapG64C2-6hNvoDtdpXY/edit?usp=sharing Presentation]&lt;br /&gt;
# [https://www.overleaf.com/3442949237tvggkctnjdbj Paper]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rbvi.ucsf.edu/chimerax/ UCSF ChimeraX]&#039;&#039;&#039;: Next-generation molecular visualization program from the Resource for Biocomputing, Visualization, and Informatics (RBVI).&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/vmd/ VMD]&#039;&#039;&#039;: Molecular visualization program for displaying, animating, and analyzing large biomolecular systems using 3D graphics and built-in scripting. Used in conjunction with NAMD for visualizing molecular dynamics simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/namd/ NAMD]&#039;&#039;&#039;: Parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. Scales to hundreds of cores for typical simulations and beyond 500,000 cores for the largest simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/Platform/App/Mole MOLE]&#039;&#039;&#039;: Universal toolkit for rapid location and characterization of channels and pores in biomacromolecules.&lt;br /&gt;
* &#039;&#039;&#039;[https://caver.cz/ CAVER]&#039;&#039;&#039;: Software tool for the analysis and visualization of tunnels and channels in protein structures.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/ RCSB PDB Protein Data Bank]&#039;&#039;&#039;: The largest and most popular database of protein structures.&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5839519/ Survey: Geometric Protein Cavity Detection Algorithms]&#039;&#039;&#039;: Paper surveying the current geometric algorithms for protein cavity detection. This is a great resource for understanding this project.&lt;br /&gt;
* &#039;&#039;&#039;[https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-39 MOLE 2.0]&#039;&#039;&#039;: Paper describing the MOLE 2.0 protein cavity detection software. Contains a good algorithm that can be used for extracting a good approximation of the surface of a point cloud of atoms.&lt;br /&gt;
* &#039;&#039;&#039;[https://reader.elsevier.com/reader/sd/pii/S0969212607003759?token=4D0F6192E971D4406E8F7CBA047B0490C8715EBD67579D26427E0E63BD0298BEBF948DB238A28E4EAE2D17EBC6DF4E50 MOLE 1.0]&#039;&#039;&#039;: Paper describing the MOLE 1.0 algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/epdf/10.1002/prot.22052 MolAxis]&#039;&#039;&#039;: Paper describing the MolAxis protein cavity detection software.&lt;br /&gt;
* &#039;&#039;&#039;[https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002708 CAVER 3.0]&#039;&#039;&#039;: Paper describing the CAVER 3.0 protein cavity detection software. This algorithm specializes in identifying tunnels.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.sciencedirect.com/science/article/abs/pii/S0022283606008746 Travel Depth]&#039;&#039;&#039;: Paper describing the &amp;quot;travel depth&amp;quot; algorithm for protein cavity visualization.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/full/10.1111/cgf.12120 GPU Protein Cavity Detection using Ambient Occlusion]&#039;&#039;&#039;: Paper describing a GPU-based protein cavity detection algorithm that utilizes Ambient Occlusion.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf DBSCAN]&#039;&#039;&#039;: Paper describing the DBSCAN clustering algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://link.springer.com/article/10.1023/A:1009884809343 PDBSCAN]&#039;&#039;&#039;: Paper describing a parallel version of DBSCAN.&lt;br /&gt;
* &#039;&#039;&#039;[https://pubmed.ncbi.nlm.nih.gov/31133031/ Coronavirus envelope protein]&#039;&#039;&#039;: Paper describing research on the envelope protein of coronaviruses.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.cell.com/biophysj/fulltext/S0006-3495(20)33168-4 COVID-19 virion model]&#039;&#039;&#039;: Paper describing a detail model of the SARS-CoV-2 virus particle.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7685317/pdf/nihpp-2020.11.19.390187.pdf COVID-19 simulation]&#039;&#039;&#039;: Paper describing large-scale COVID-19 simulations.&lt;br /&gt;
&lt;br /&gt;
=== Organizations/Groups ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/ University of Illinois at Urbana-Champaign: Theoretical and Computational Biophysics Group]&#039;&#039;&#039;: Perhaps the most important group in molecular dynamics. Developers of VMD and NAMD. Ran the simulation for the 200 million atom model of COVID-19.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/ Oak Ridge National Laboratory (ORNL)]&#039;&#039;&#039;: Major national lab with active involvement in drug discovery and design using supercomputers.&lt;br /&gt;
* &#039;&#039;&#039;[http://rbvi.ucsf.edu/ Resource for Biocomputing, Visualization, and Informatics (RBVI)]&#039;&#039;&#039;: Developers of UCSF Chimera and UCSF ChimeraX.&lt;br /&gt;
* &#039;&#039;&#039;[https://ist.ac.at/en/research/edelsbrunner-group/ IST Austria: Edelsbrunner Group]&#039;&#039;&#039;: Important group in algorithms, computational geometry, and computational topology. Involved with protein cavity detection in the past and potentially involved now. The head of the group, Edelsbrunner created alpha shapes.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tacc.utexas.edu/systems/frontera Texas Advanced Computing Center]&#039;&#039;&#039;: Maintainers of the Frontera supercomputer, the fifth fastest supercomputer in the world (2020). The simulation for the 200 million atom model of COVID-19 was executed on this supercomputer.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/ WebChemistry]&#039;&#039;&#039;: Developed MOLE and many other software tools related to molecular analysis.&lt;br /&gt;
&lt;br /&gt;
=== Important Links ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.hpcwire.com/off-the-wire/coronavirus-massive-simulations-completed-on-frontera-supercomputer/ COVID-19 200 million atom NAMD simulation]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/news/early-research-existing-drug-compounds-supercomputing-could-combat-coronavirus/ ORNL COVID-19 spike drug identification]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Proteins ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/1jj2 Large Ribosomal Subunit (98,693 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VXX COVID-19 Spike Glycoprotein, Closed State (23,694 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6Y2E COVID-19 Main Protease (5,370 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VWW COVID-19 NSP15 Endoribonuclease (24,036 atoms)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] Simões, T., Lopes, D., Dias, S., Fernandes, F., Pereira, J., Jorge, J., Bajaj, C., &amp;amp; Gomes, A. (2017). Geometric Detection Algorithms for Cavities on Protein Surfaces in Molecular Graphics: A Survey. Computer graphics forum : journal of the European Association for Computer Graphics, 36(8), 643–683. https://doi.org/10.1111/cgf.13158&lt;br /&gt;
&lt;br /&gt;
[2] Yaffe, Fishelovitch, Wolfson, Halperin, &amp;amp; Nussinov. (2008). MolAxis: Efficient and accurate identification of channels in macromolecules. Proteins: Structure, Function, and Bioinformatics, 73(1), 72-86.&lt;br /&gt;
&lt;br /&gt;
[3] Coleman, R. G., &amp;amp; Sharp, K. A. (2006). Travel depth, a new shape descriptor for macromolecules: application to ligand binding. Journal of molecular biology, 362(3), 441–458. https://doi.org/10.1016/j.jmb.2006.07.022&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8480</id>
		<title>Internal:GPCD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8480"/>
		<updated>2021-06-03T17:41:51Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Paper and Presenation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavities ===&lt;br /&gt;
Cavities are structural features of proteins and they are often important for drug discovery and design. There are different kinds of cavities, including pockets, voids, tunnels, and channels. The types of cavities are listed in more detail in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityTypes.jpg|center|frame| Figure 1: The basic types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Void&#039;&#039;&#039;: A cavity that looks like internal &amp;quot;hole&amp;quot; in a protein with no connection to the surface.&lt;br /&gt;
# &#039;&#039;&#039;Cleft&#039;&#039;&#039;: A pocket that looks like a &amp;quot;dent&amp;quot; in the surface of a protein. Can also be found as part of a tunnel or channel.&lt;br /&gt;
# &#039;&#039;&#039;Invagination&#039;&#039;&#039;: A pocket that looks like a &amp;quot;cove&amp;quot;. It has a small opening on the surface of a protein and leads to a larger interior. Can also be found as part of a tunnel or after a cleft.&lt;br /&gt;
# &#039;&#039;&#039;Tunnel&#039;&#039;&#039;: A pocket that has an opening on the surface of a protein and leads to somewhere in the interior. Has no opening on the other side.&lt;br /&gt;
# &#039;&#039;&#039;Channel&#039;&#039;&#039;: A cavity that has an opening on one side of the surface of a protein and leads to another opening in another location on the surface of the protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course, the types of cavities listed in figure 1 are only the basic ones. Combinations of these are also possible as shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityAdvancedTypes.jpg|center|frame| Figure 2: Combination types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavity Detection Methods ===&lt;br /&gt;
There are several methods for detecting protein cavities. There are sphere based methods, grid based methods, grid-and-sphere based methods, surface based methods, grid-and-surface based methods, time-varying methods, GPU based methods, consensus based methods, and finally tessellation based methods. These algorithms are shown in more detail in figure 3. Tessellation based methods mainly rely on Voronoi tessellation. Some methods rely on weighted Voronoi tessellation because of its ability to more accurately represent the volume of atoms. The Voronoi tessellation in these methods is computed from a set of points representing the atomic centers of the underlying protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityDetectionAlgorithms.jpg|center|frame| Figure 3: A hierarchy of protein cavity detection algorithms [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literature Review ==&lt;br /&gt;
&lt;br /&gt;
=== MOLE ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MOLE algorithm is specifically designed to identify tunnels and channels. Finding superficial cavities is a secondary concern and does so as part of the surface approximation step. MOLE utilizes the surface obtained by the refinement of the convex hull to find superficial cavities such as clefts and invaginations. In essence, the approximation of a more accurate surface and the detection of these superficial cavities are closely related. As tetrahedra are removed from the convex hull to get a more accurate surface approximation, a parameter called &#039;&#039;interior threshold&#039;&#039; controls how many superficial cavities are found. For example, if the number of tetrahedra removed from a specific part of the molecule exceeds this threshold, the algorithm marks these tetrahedra as part of a superficial cavity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:moleVoronoiTunnelPath.jpg|center|frame| Figure 4: Shows in 2D the Voronoi diagram (thin lines) and the convex hull (dotted line) of molecule represented by atoms (circles). Each Voronoi edge is evaluated by the cost function (numbers). The thick line represents the optimal path found by the Dijkstra&#039;s algorithm from the given starting point (black circle), i.e., centerline of found tunnel. [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the more complicated types of cavities, tunnels and channels, MOLE uses the Voronoi diagram to identify them. Start and end points are defined as the centers of the deepest tetrahedra in each cavity. The depth of the tetrahedron is defined as the number of Voronoi edges from the closest boundary tetrahedron (on the surface). Tunnels/channels are computed as the shortest paths between all pairs of start and end points in the same cavity diagram.&lt;br /&gt;
&lt;br /&gt;
[[File:MoleDijkstraWeightFunction.png|center|frame| Figure 5: Shows the weight function used to estimate the weight of each Voronoi edge for Dijkstra&#039;s algorihtm. l(e) is the length of the edge, d(e) is the distance of the edge to the closest atom Van der Waals sphere and ϵ is a small number to avoid division by zero [1]]]&lt;br /&gt;
&lt;br /&gt;
==== Complexity ====&lt;br /&gt;
* Worst-case: O(N^2 log N), where N is the number of atoms in the molecule. &lt;br /&gt;
* Average: O(M log M), where M is the number of vertices in the Voronoi diagram (in the worst case, M = N^2, but in most cases M = O(N)). As a result of the use of the incremental algorithm and Hilbert curve ordering, the complexity of calculating the Delaunay triangulation of most molecular structures is O(N log N). Finally, the complexity of all the remaining steps of the algorithm is at most O(M log M).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MolAxis ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MolAxis algorithm relies on Voronoi and Dijkstra&#039;s algorithm to find channels, similarly to MOLE. The algorithm consists of the following high-level steps:&lt;br /&gt;
&lt;br /&gt;
# Approximate the molecule using a collection of &#039;&#039;&#039;fixed-size spheres&#039;&#039;&#039;. The number of balls needed depends on the required quality of the approximation. In the extreme case, where the user is interested in a high resolution, each atom is approximated using a single sphere. &lt;br /&gt;
# Compute the &#039;&#039;&#039;Voronoi diagram&#039;&#039;&#039; of the centers of the fixed-sized spheres. The diagram is intersected with a user-defined bounding sphere. This defines the area of interest.&lt;br /&gt;
# Discard the parts of the Voronoi diagram that intersect the molecule.&lt;br /&gt;
# Define a &#039;&#039;&#039;graph&#039;&#039;&#039;, using the Voronoi vertices and edges. A weight is given to each edge, which depends on its length and on its distance from the surface of the molecule. &lt;br /&gt;
# Define a &#039;&#039;&#039;source point (root vertex)&#039;&#039;&#039;. The user can either supply a source point or allow MolAxis to automatically choose the source point to be the &#039;&#039;&#039;center of the largest cavity in the molecule&#039;&#039;&#039; (basically detect channels inside-out).&lt;br /&gt;
# Apply a shortest path optimization algorithm (&#039;&#039;&#039;Dijktra&#039;s algorithm&#039;&#039;&#039;) on the graph, computing a tree called the &amp;quot;corridor tree&amp;quot;.&lt;br /&gt;
# The desired channels are paths in the corridor tree. Duplicate channels are avoided by using the split distance parameter. The split distance bounds the distance to the least common ancestor of the channel and all previously reported channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MolAxisVoronoi.png|center|frame| Figure 6: Shows an example of fixed-size circles (light-blue) approximating varying-size circles and the pathway diagram of their centers. The discarded portion of the Voronoi diagram of their centers is depicted using dotted lines [2]. This figure also helps illustrate the usefulness of the Voronoi tessellation in computing pathways.]]&lt;br /&gt;
&lt;br /&gt;
== Protein Energetics ==&lt;br /&gt;
=== Metrics ===&lt;br /&gt;
# &#039;&#039;&#039;Hydrophobicity&#039;&#039;&#039;: Physical property of a molecule that is seemingly repelled from a mass of water. Hydrophilic molecules are attracted to water. Hydrophobicity plays a major role in protein folding. Hydrophobic molecules also tend to be nonpolar and prefer other neutral molecules and nonpolar solvents. Hydrophobicity is the most widely used metric.&lt;br /&gt;
# &#039;&#039;&#039;Hydrogen Bonds&#039;&#039;&#039;: Weak bonds between two molecules resulting from an electrostatic attraction between a proton in one molecule and an electronegative atom in the other. We often see these bonds between oxygen and hydrogen.&lt;br /&gt;
# &#039;&#039;&#039;Van der Waals Interactions&#039;&#039;&#039;: Also known as Van der Waals forces, they are forces driven by induced electrical interactions between two or more atoms or molecules that are very close to each other. Van der Waals interaction is the weakest of all intermolecular attractions between molecules. These forces are distance-dependent.&lt;br /&gt;
# &#039;&#039;&#039;Salt Bridges&#039;&#039;&#039;: Non-covalent (no sharing of eletrons; electromagnetic) interaction between two ionized sites. It has two components: a hydrogen bond and an electrostatic interaction.&lt;br /&gt;
# &#039;&#039;&#039;Disulfide Bridges&#039;&#039;&#039;: Strong bonds that can form between two cysteines (an amino acid). The strength of disulfide bridges helps stabilize a protein. Disulfide bridges are especially common in proteins that are secreted from cells.&lt;br /&gt;
# &#039;&#039;&#039;Charge&#039;&#039;&#039;: Plays a role in strength of bonds. A higher charge means that an atom will have stronger forces in an electromagnetic field.&lt;br /&gt;
# &#039;&#039;&#039;Polarity&#039;&#039;&#039;: Separation of electric charge leading to a molecule or its chemical groups having an electric dipole moment, with a negatively charged end and a positively charged end. Indicates the existence of polar bonds, which are covalent (sharing of electrons) and are quite strong. About [https://chem.libretexts.org/Bookshelves/Inorganic_Chemistry/Book%3A_Introduction_to_Inorganic_Chemistry/01%3A_Review_of_Chemical_Bonding/1.04%3A_Bond_Polarity_and_Bond_Strength bond polarity].&lt;br /&gt;
&lt;br /&gt;
== Candidate Method: Geometric Protein Cavities Detection (&#039;&#039;&#039;GPCD&#039;&#039;&#039;) ==&lt;br /&gt;
The Pipeline contains the following high-level algorithmic steps:&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Read protein ===&lt;br /&gt;
# Input: PDB file&lt;br /&gt;
# Output: A Polydata of the protein&lt;br /&gt;
# Algorithmic Step:&lt;br /&gt;
## (Angelos) Using vtkPDBReader, read the PDB file that included the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos) Upgrade vtkPDBReader to be able to manage multimodel proteins [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Fix vtkPDBReader error of setting wrong atom numbers [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Set up vtkPDBReader to utilize [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] for the Covalent radius and Van-der-Waals radius [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Improve [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] by using: [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### updated Van-der-Waals radius values provided by Los Alamos National Laboratory&lt;br /&gt;
### updated Covalent radius values provided by Cambridge Structural Database&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Extract unique protein Chains ===&lt;br /&gt;
# Input:  A Polydata of the protein&lt;br /&gt;
# Output: Unique protein chains without het-atoms and Symmetric Information&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a filter that removes the het-atoms and creates the polydata of the protein chains. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Detect the unique protein chains using Symmetry detection techniques ([https://en.wikipedia.org/wiki/Kabsch_algorithm Kabsch algorithm]) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Store the Symmetry information (rotation and translation). [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: This way we can mesh each unique chain individually&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Sort Atoms By Radius ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms&lt;br /&gt;
# Output: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using vtkSortFieldData we sort the non-Het atoms by radius in descending order. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed using vtkSMPTools [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Αngelos) Compute the Solvent Excluded Image ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order, probe radius, spacing&lt;br /&gt;
# Output: Solvent Excluded Image of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros) Calculate the optimal bounding box of the protein chain using CGAL&#039;s implementation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Angelos) Create the Solvent Accessible image by creating spheres for each atom that their radius is: Van der Waals radius + probe radius. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos) Perform Euclidean Distance Transform on the Solvent Accessible image using the &#039;&#039;&#039;itk::SignedMaurerDistanceMapImageFilter&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
## (Spiros) Extract Solvent Excluded image from the EDT result by setting: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### All pixel values &amp;lt; probe-radius - truncationError[atomType] - paddingDistance = 0&lt;br /&gt;
### All pixel values &amp;gt;= probe-radius - truncationError[atomType] - paddingDistance = 1&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros) Handle the calculation of truncationError[atomType] in a thread-safe way by sorting the atoms by radius in descending order [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Truncation error is caused because of the spacing of the image.&lt;br /&gt;
## (Spiros/Angelos) Select a paddingDistance value to help PODM3D produce an accurate surface [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Close holes that should not exist using the distance of the pixel point vs the actual atom [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Create smaller images using the concept that is described in the EDTSurf paper [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Compute the Solvent Excluded Surface (&#039;&#039;&#039;SES&#039;&#039;&#039;)===&lt;br /&gt;
# Input: Solvent Excluded Image of a chain&lt;br /&gt;
# Output: Solvent Excluded Surface of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, produce a volumetric mesh of the image. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, extract the volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;vtkDataSetSurfaceFilter&#039;&#039;&#039;, extract the surface of volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039; this filter is used because when PODM is extracting the surface, its triangles are oriented the wrong way.&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Advantages:&lt;br /&gt;
## Can control the number of elements on the surface&lt;br /&gt;
## the edge lengths bounds are relatively small which helps in the clustering.&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Select a default delta value. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fix volume grading crashing. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Surface needs to be smoothed. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Extract Atom Types of surface points ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain surface and a Polydata of the unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Output: Atom Types of surface points of the unique protein chain surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using a KD-tree, for each surface point, find the closest atom: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If the surface point is within the radius of the closest atom, assign the atom type of the closest point to the surface point&lt;br /&gt;
### Else, assign &#039;&#039;&#039;0&#039;&#039;&#039;, which means the surface point is part of the re-entrance surface.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Find an ideal offset distance value between the surface points and their closest atoms to improve accuracy. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Generate the Symmetric Protein chain surfaces ===&lt;br /&gt;
# Input: A vector of the unique protein chain surfaces and the Symmetry information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;SymmetricProteinChainsSurface&#039;&#039;&#039; filter that generates the non unique protein chain surfaces using the Symmetry information. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Assign Model and Chain arrays on SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces &amp;amp; model and chains information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;AssignModelAndChain&#039;&#039;&#039; filter that assigns the model and chain arrays for each protein chain surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Merge Protein Chain SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Output: Solvent Excluded Surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;MergeSurfaces&#039;&#039;&#039; filter that merges all the protein-chains surfaces into one and forms the solvent excluded surface of the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Compute ambient occlusion of the SES === &lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Ambient Occlusion values of surface points, normals of surface points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos/Spiros) Using IGL Library, which uses [https://www.embree.org/ Embree] and [https://eigen.tuxfamily.org/dox/ Eigen], calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Using the CUDA and Optix library, calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: GPU parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros/Angelos) Eliminate the noise that is created due to the non-smoothed &#039;&#039;&#039;PODM3D&#039;&#039;&#039; surface by assigning for each vertex the average ambient occlusion value of its neighbors + itself. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Use the symmetry information to minimize the memory footprint for CPU and GPU [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Compute Surface Statistics ===&lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Statistics of Surface Triangles&#039; Edges&lt;br /&gt;
# Algoritmic step:&lt;br /&gt;
## Compute min/mean/median/max edge lengths of the surface triangles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Cavity Detection ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Ambient Occlusion values of surface points, Surface Statistics&lt;br /&gt;
# Output: Protein Cavities&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a modified version of the clustering method &#039;&#039;&#039;DBSCAN&#039;&#039;&#039;, that finds neighbors based on their density &#039;&#039;&#039;and&#039;&#039;&#039; ambient occlusion values, form clusters that define protein cavities. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Idea 1: [https://link.springer.com/article/10.1023/A:1009884809343 A Fast Parallel Clustering Algorithm for Large Spatial Databases PDBSCAN]&lt;br /&gt;
#### Idea 2: Speculative Execution using &#039;&#039;&#039;PREMA&#039;&#039;&#039;&lt;br /&gt;
## (Angelos) Implement a rendering framework to visualize the clustering process using &#039;&#039;&#039;VTK&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Tune the clustering parameters:&lt;br /&gt;
### (Spiros) Search-radius = 2 * minEdgeLength of the surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Esp = 8. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Min cavity size = cavityFactor * delta^-2.178. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Default value of cavityFactor = 20.&lt;br /&gt;
## Limit the expansion of the cavity by using: &lt;br /&gt;
### (Spiros) A relative threshold for the difference an occlusion value from the average occlusion value of the cluster. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Define weights for the occlusion values, and convert the mean to a weighted mean. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Define occlusion values bounds to detect different types of cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## [https://dl.acm.org/doi/abs/10.1145/304181.304187 OPTICS: ordering points to identify the clustering structure] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Use symmetry information to quickly detect the per-model cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Angelos) Map Electrostatics Potentials on Surface Points ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Electrostatic Potentials Image &#039;&#039;&#039;ESP&#039;&#039;&#039; of [http://www.poissonboltzmann.org/ APBS], normals of surface points, probe radius, lowerThreshold-upperThreshold&lt;br /&gt;
# Output: Electrostatic values of surface points&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros/Angelos) For each surface point: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Scale the point using normals, and probe radius to the solvent-accessible surface, &lt;br /&gt;
### Get the value of the closest pixel from the &#039;&#039;&#039;ESP&#039;&#039;&#039; to the scaled point:&lt;br /&gt;
#### If value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
#### Else if, value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
#### Else get the interpolated value of the scaled points from the image:&lt;br /&gt;
##### If interpolated value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
##### Else if, interpolated value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos/Spiros) Create reader of the [https://www.ics.uci.edu/~dock/manuals/apbs/html/user-guide/x2674.html OpenDx] file format that is used as output by APBS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Select Clustered cavity points ===&lt;br /&gt;
# Input: Labeled Solvent Surface Surface&lt;br /&gt;
# Output: Labeled clustered cavity points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a SelectPoints filter. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Select only the points that are clustered at the cavity detection step. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: this is done to improve the speed of writing the output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Write Results:  ===&lt;br /&gt;
# Input: Labeled clustered cavity points or Labeled Solvent Surface Surface&lt;br /&gt;
# Output: solventSurface.vtp&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a vtkXMLPolyDataWriter, write the output file. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Create a writer, just for the cavities to minimize the IO. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Idea: See &#039;&#039;&#039;Fpocket&#039;&#039;&#039;.&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Note: a Paraview plugin may be developed for visualization purposes. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Classify cavity type ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Atomic Cavities, Atom Types of surface points&lt;br /&gt;
# Output: Labeled atomic Cavities&lt;br /&gt;
# Algorithm steps:&lt;br /&gt;
# Ideas that might be used: &lt;br /&gt;
## Ambient occlusion values based classification using mean distance cluster value [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Analyze the shape of clusters to identify what type of cavity they are. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### This can potentially be done using machine learning.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== GPCD vs MOLE ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| GPCD&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| MOLE&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Surface Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Interior Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Visualize Exact Channel Shape&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Very Large Molecules&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO (very slow)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Multi-Model Files&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Parallelization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Relative Performance&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | VERY FAST&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | SLOW&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Intuitive Visualization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| False Positives&lt;br /&gt;
| style=&amp;quot;background-color: orange; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Quantify Major Structural Features&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Paper and Presenation ==&lt;br /&gt;
[https://docs.google.com/presentation/d/1rYKfxhgCc9oUKI3xEZ0gLZQOapG64C2-6hNvoDtdpXY/edit?usp=sharing Presentation]&lt;br /&gt;
[https://www.overleaf.com/3442949237tvggkctnjdbj Paper]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rbvi.ucsf.edu/chimerax/ UCSF ChimeraX]&#039;&#039;&#039;: Next-generation molecular visualization program from the Resource for Biocomputing, Visualization, and Informatics (RBVI).&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/vmd/ VMD]&#039;&#039;&#039;: Molecular visualization program for displaying, animating, and analyzing large biomolecular systems using 3D graphics and built-in scripting. Used in conjunction with NAMD for visualizing molecular dynamics simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/namd/ NAMD]&#039;&#039;&#039;: Parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. Scales to hundreds of cores for typical simulations and beyond 500,000 cores for the largest simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/Platform/App/Mole MOLE]&#039;&#039;&#039;: Universal toolkit for rapid location and characterization of channels and pores in biomacromolecules.&lt;br /&gt;
* &#039;&#039;&#039;[https://caver.cz/ CAVER]&#039;&#039;&#039;: Software tool for the analysis and visualization of tunnels and channels in protein structures.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/ RCSB PDB Protein Data Bank]&#039;&#039;&#039;: The largest and most popular database of protein structures.&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5839519/ Survey: Geometric Protein Cavity Detection Algorithms]&#039;&#039;&#039;: Paper surveying the current geometric algorithms for protein cavity detection. This is a great resource for understanding this project.&lt;br /&gt;
* &#039;&#039;&#039;[https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-39 MOLE 2.0]&#039;&#039;&#039;: Paper describing the MOLE 2.0 protein cavity detection software. Contains a good algorithm that can be used for extracting a good approximation of the surface of a point cloud of atoms.&lt;br /&gt;
* &#039;&#039;&#039;[https://reader.elsevier.com/reader/sd/pii/S0969212607003759?token=4D0F6192E971D4406E8F7CBA047B0490C8715EBD67579D26427E0E63BD0298BEBF948DB238A28E4EAE2D17EBC6DF4E50 MOLE 1.0]&#039;&#039;&#039;: Paper describing the MOLE 1.0 algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/epdf/10.1002/prot.22052 MolAxis]&#039;&#039;&#039;: Paper describing the MolAxis protein cavity detection software.&lt;br /&gt;
* &#039;&#039;&#039;[https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002708 CAVER 3.0]&#039;&#039;&#039;: Paper describing the CAVER 3.0 protein cavity detection software. This algorithm specializes in identifying tunnels.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.sciencedirect.com/science/article/abs/pii/S0022283606008746 Travel Depth]&#039;&#039;&#039;: Paper describing the &amp;quot;travel depth&amp;quot; algorithm for protein cavity visualization.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/full/10.1111/cgf.12120 GPU Protein Cavity Detection using Ambient Occlusion]&#039;&#039;&#039;: Paper describing a GPU-based protein cavity detection algorithm that utilizes Ambient Occlusion.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf DBSCAN]&#039;&#039;&#039;: Paper describing the DBSCAN clustering algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://link.springer.com/article/10.1023/A:1009884809343 PDBSCAN]&#039;&#039;&#039;: Paper describing a parallel version of DBSCAN.&lt;br /&gt;
* &#039;&#039;&#039;[https://pubmed.ncbi.nlm.nih.gov/31133031/ Coronavirus envelope protein]&#039;&#039;&#039;: Paper describing research on the envelope protein of coronaviruses.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.cell.com/biophysj/fulltext/S0006-3495(20)33168-4 COVID-19 virion model]&#039;&#039;&#039;: Paper describing a detail model of the SARS-CoV-2 virus particle.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7685317/pdf/nihpp-2020.11.19.390187.pdf COVID-19 simulation]&#039;&#039;&#039;: Paper describing large-scale COVID-19 simulations.&lt;br /&gt;
&lt;br /&gt;
=== Organizations/Groups ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/ University of Illinois at Urbana-Champaign: Theoretical and Computational Biophysics Group]&#039;&#039;&#039;: Perhaps the most important group in molecular dynamics. Developers of VMD and NAMD. Ran the simulation for the 200 million atom model of COVID-19.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/ Oak Ridge National Laboratory (ORNL)]&#039;&#039;&#039;: Major national lab with active involvement in drug discovery and design using supercomputers.&lt;br /&gt;
* &#039;&#039;&#039;[http://rbvi.ucsf.edu/ Resource for Biocomputing, Visualization, and Informatics (RBVI)]&#039;&#039;&#039;: Developers of UCSF Chimera and UCSF ChimeraX.&lt;br /&gt;
* &#039;&#039;&#039;[https://ist.ac.at/en/research/edelsbrunner-group/ IST Austria: Edelsbrunner Group]&#039;&#039;&#039;: Important group in algorithms, computational geometry, and computational topology. Involved with protein cavity detection in the past and potentially involved now. The head of the group, Edelsbrunner created alpha shapes.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tacc.utexas.edu/systems/frontera Texas Advanced Computing Center]&#039;&#039;&#039;: Maintainers of the Frontera supercomputer, the fifth fastest supercomputer in the world (2020). The simulation for the 200 million atom model of COVID-19 was executed on this supercomputer.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/ WebChemistry]&#039;&#039;&#039;: Developed MOLE and many other software tools related to molecular analysis.&lt;br /&gt;
&lt;br /&gt;
=== Important Links ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.hpcwire.com/off-the-wire/coronavirus-massive-simulations-completed-on-frontera-supercomputer/ COVID-19 200 million atom NAMD simulation]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/news/early-research-existing-drug-compounds-supercomputing-could-combat-coronavirus/ ORNL COVID-19 spike drug identification]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Proteins ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/1jj2 Large Ribosomal Subunit (98,693 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VXX COVID-19 Spike Glycoprotein, Closed State (23,694 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6Y2E COVID-19 Main Protease (5,370 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VWW COVID-19 NSP15 Endoribonuclease (24,036 atoms)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] Simões, T., Lopes, D., Dias, S., Fernandes, F., Pereira, J., Jorge, J., Bajaj, C., &amp;amp; Gomes, A. (2017). Geometric Detection Algorithms for Cavities on Protein Surfaces in Molecular Graphics: A Survey. Computer graphics forum : journal of the European Association for Computer Graphics, 36(8), 643–683. https://doi.org/10.1111/cgf.13158&lt;br /&gt;
&lt;br /&gt;
[2] Yaffe, Fishelovitch, Wolfson, Halperin, &amp;amp; Nussinov. (2008). MolAxis: Efficient and accurate identification of channels in macromolecules. Proteins: Structure, Function, and Bioinformatics, 73(1), 72-86.&lt;br /&gt;
&lt;br /&gt;
[3] Coleman, R. G., &amp;amp; Sharp, K. A. (2006). Travel depth, a new shape descriptor for macromolecules: application to ligand binding. Journal of molecular biology, 362(3), 441–458. https://doi.org/10.1016/j.jmb.2006.07.022&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8479</id>
		<title>Internal:GPCD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8479"/>
		<updated>2021-06-03T17:41:02Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Paper and Presenation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavities ===&lt;br /&gt;
Cavities are structural features of proteins and they are often important for drug discovery and design. There are different kinds of cavities, including pockets, voids, tunnels, and channels. The types of cavities are listed in more detail in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityTypes.jpg|center|frame| Figure 1: The basic types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Void&#039;&#039;&#039;: A cavity that looks like internal &amp;quot;hole&amp;quot; in a protein with no connection to the surface.&lt;br /&gt;
# &#039;&#039;&#039;Cleft&#039;&#039;&#039;: A pocket that looks like a &amp;quot;dent&amp;quot; in the surface of a protein. Can also be found as part of a tunnel or channel.&lt;br /&gt;
# &#039;&#039;&#039;Invagination&#039;&#039;&#039;: A pocket that looks like a &amp;quot;cove&amp;quot;. It has a small opening on the surface of a protein and leads to a larger interior. Can also be found as part of a tunnel or after a cleft.&lt;br /&gt;
# &#039;&#039;&#039;Tunnel&#039;&#039;&#039;: A pocket that has an opening on the surface of a protein and leads to somewhere in the interior. Has no opening on the other side.&lt;br /&gt;
# &#039;&#039;&#039;Channel&#039;&#039;&#039;: A cavity that has an opening on one side of the surface of a protein and leads to another opening in another location on the surface of the protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course, the types of cavities listed in figure 1 are only the basic ones. Combinations of these are also possible as shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityAdvancedTypes.jpg|center|frame| Figure 2: Combination types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavity Detection Methods ===&lt;br /&gt;
There are several methods for detecting protein cavities. There are sphere based methods, grid based methods, grid-and-sphere based methods, surface based methods, grid-and-surface based methods, time-varying methods, GPU based methods, consensus based methods, and finally tessellation based methods. These algorithms are shown in more detail in figure 3. Tessellation based methods mainly rely on Voronoi tessellation. Some methods rely on weighted Voronoi tessellation because of its ability to more accurately represent the volume of atoms. The Voronoi tessellation in these methods is computed from a set of points representing the atomic centers of the underlying protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityDetectionAlgorithms.jpg|center|frame| Figure 3: A hierarchy of protein cavity detection algorithms [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literature Review ==&lt;br /&gt;
&lt;br /&gt;
=== MOLE ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MOLE algorithm is specifically designed to identify tunnels and channels. Finding superficial cavities is a secondary concern and does so as part of the surface approximation step. MOLE utilizes the surface obtained by the refinement of the convex hull to find superficial cavities such as clefts and invaginations. In essence, the approximation of a more accurate surface and the detection of these superficial cavities are closely related. As tetrahedra are removed from the convex hull to get a more accurate surface approximation, a parameter called &#039;&#039;interior threshold&#039;&#039; controls how many superficial cavities are found. For example, if the number of tetrahedra removed from a specific part of the molecule exceeds this threshold, the algorithm marks these tetrahedra as part of a superficial cavity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:moleVoronoiTunnelPath.jpg|center|frame| Figure 4: Shows in 2D the Voronoi diagram (thin lines) and the convex hull (dotted line) of molecule represented by atoms (circles). Each Voronoi edge is evaluated by the cost function (numbers). The thick line represents the optimal path found by the Dijkstra&#039;s algorithm from the given starting point (black circle), i.e., centerline of found tunnel. [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the more complicated types of cavities, tunnels and channels, MOLE uses the Voronoi diagram to identify them. Start and end points are defined as the centers of the deepest tetrahedra in each cavity. The depth of the tetrahedron is defined as the number of Voronoi edges from the closest boundary tetrahedron (on the surface). Tunnels/channels are computed as the shortest paths between all pairs of start and end points in the same cavity diagram.&lt;br /&gt;
&lt;br /&gt;
[[File:MoleDijkstraWeightFunction.png|center|frame| Figure 5: Shows the weight function used to estimate the weight of each Voronoi edge for Dijkstra&#039;s algorihtm. l(e) is the length of the edge, d(e) is the distance of the edge to the closest atom Van der Waals sphere and ϵ is a small number to avoid division by zero [1]]]&lt;br /&gt;
&lt;br /&gt;
==== Complexity ====&lt;br /&gt;
* Worst-case: O(N^2 log N), where N is the number of atoms in the molecule. &lt;br /&gt;
* Average: O(M log M), where M is the number of vertices in the Voronoi diagram (in the worst case, M = N^2, but in most cases M = O(N)). As a result of the use of the incremental algorithm and Hilbert curve ordering, the complexity of calculating the Delaunay triangulation of most molecular structures is O(N log N). Finally, the complexity of all the remaining steps of the algorithm is at most O(M log M).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MolAxis ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MolAxis algorithm relies on Voronoi and Dijkstra&#039;s algorithm to find channels, similarly to MOLE. The algorithm consists of the following high-level steps:&lt;br /&gt;
&lt;br /&gt;
# Approximate the molecule using a collection of &#039;&#039;&#039;fixed-size spheres&#039;&#039;&#039;. The number of balls needed depends on the required quality of the approximation. In the extreme case, where the user is interested in a high resolution, each atom is approximated using a single sphere. &lt;br /&gt;
# Compute the &#039;&#039;&#039;Voronoi diagram&#039;&#039;&#039; of the centers of the fixed-sized spheres. The diagram is intersected with a user-defined bounding sphere. This defines the area of interest.&lt;br /&gt;
# Discard the parts of the Voronoi diagram that intersect the molecule.&lt;br /&gt;
# Define a &#039;&#039;&#039;graph&#039;&#039;&#039;, using the Voronoi vertices and edges. A weight is given to each edge, which depends on its length and on its distance from the surface of the molecule. &lt;br /&gt;
# Define a &#039;&#039;&#039;source point (root vertex)&#039;&#039;&#039;. The user can either supply a source point or allow MolAxis to automatically choose the source point to be the &#039;&#039;&#039;center of the largest cavity in the molecule&#039;&#039;&#039; (basically detect channels inside-out).&lt;br /&gt;
# Apply a shortest path optimization algorithm (&#039;&#039;&#039;Dijktra&#039;s algorithm&#039;&#039;&#039;) on the graph, computing a tree called the &amp;quot;corridor tree&amp;quot;.&lt;br /&gt;
# The desired channels are paths in the corridor tree. Duplicate channels are avoided by using the split distance parameter. The split distance bounds the distance to the least common ancestor of the channel and all previously reported channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MolAxisVoronoi.png|center|frame| Figure 6: Shows an example of fixed-size circles (light-blue) approximating varying-size circles and the pathway diagram of their centers. The discarded portion of the Voronoi diagram of their centers is depicted using dotted lines [2]. This figure also helps illustrate the usefulness of the Voronoi tessellation in computing pathways.]]&lt;br /&gt;
&lt;br /&gt;
== Protein Energetics ==&lt;br /&gt;
=== Metrics ===&lt;br /&gt;
# &#039;&#039;&#039;Hydrophobicity&#039;&#039;&#039;: Physical property of a molecule that is seemingly repelled from a mass of water. Hydrophilic molecules are attracted to water. Hydrophobicity plays a major role in protein folding. Hydrophobic molecules also tend to be nonpolar and prefer other neutral molecules and nonpolar solvents. Hydrophobicity is the most widely used metric.&lt;br /&gt;
# &#039;&#039;&#039;Hydrogen Bonds&#039;&#039;&#039;: Weak bonds between two molecules resulting from an electrostatic attraction between a proton in one molecule and an electronegative atom in the other. We often see these bonds between oxygen and hydrogen.&lt;br /&gt;
# &#039;&#039;&#039;Van der Waals Interactions&#039;&#039;&#039;: Also known as Van der Waals forces, they are forces driven by induced electrical interactions between two or more atoms or molecules that are very close to each other. Van der Waals interaction is the weakest of all intermolecular attractions between molecules. These forces are distance-dependent.&lt;br /&gt;
# &#039;&#039;&#039;Salt Bridges&#039;&#039;&#039;: Non-covalent (no sharing of eletrons; electromagnetic) interaction between two ionized sites. It has two components: a hydrogen bond and an electrostatic interaction.&lt;br /&gt;
# &#039;&#039;&#039;Disulfide Bridges&#039;&#039;&#039;: Strong bonds that can form between two cysteines (an amino acid). The strength of disulfide bridges helps stabilize a protein. Disulfide bridges are especially common in proteins that are secreted from cells.&lt;br /&gt;
# &#039;&#039;&#039;Charge&#039;&#039;&#039;: Plays a role in strength of bonds. A higher charge means that an atom will have stronger forces in an electromagnetic field.&lt;br /&gt;
# &#039;&#039;&#039;Polarity&#039;&#039;&#039;: Separation of electric charge leading to a molecule or its chemical groups having an electric dipole moment, with a negatively charged end and a positively charged end. Indicates the existence of polar bonds, which are covalent (sharing of electrons) and are quite strong. About [https://chem.libretexts.org/Bookshelves/Inorganic_Chemistry/Book%3A_Introduction_to_Inorganic_Chemistry/01%3A_Review_of_Chemical_Bonding/1.04%3A_Bond_Polarity_and_Bond_Strength bond polarity].&lt;br /&gt;
&lt;br /&gt;
== Candidate Method: Geometric Protein Cavities Detection (&#039;&#039;&#039;GPCD&#039;&#039;&#039;) ==&lt;br /&gt;
The Pipeline contains the following high-level algorithmic steps:&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Read protein ===&lt;br /&gt;
# Input: PDB file&lt;br /&gt;
# Output: A Polydata of the protein&lt;br /&gt;
# Algorithmic Step:&lt;br /&gt;
## (Angelos) Using vtkPDBReader, read the PDB file that included the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos) Upgrade vtkPDBReader to be able to manage multimodel proteins [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Fix vtkPDBReader error of setting wrong atom numbers [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Set up vtkPDBReader to utilize [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] for the Covalent radius and Van-der-Waals radius [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Improve [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] by using: [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### updated Van-der-Waals radius values provided by Los Alamos National Laboratory&lt;br /&gt;
### updated Covalent radius values provided by Cambridge Structural Database&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Extract unique protein Chains ===&lt;br /&gt;
# Input:  A Polydata of the protein&lt;br /&gt;
# Output: Unique protein chains without het-atoms and Symmetric Information&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a filter that removes the het-atoms and creates the polydata of the protein chains. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Detect the unique protein chains using Symmetry detection techniques ([https://en.wikipedia.org/wiki/Kabsch_algorithm Kabsch algorithm]) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Store the Symmetry information (rotation and translation). [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: This way we can mesh each unique chain individually&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Sort Atoms By Radius ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms&lt;br /&gt;
# Output: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using vtkSortFieldData we sort the non-Het atoms by radius in descending order. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed using vtkSMPTools [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Αngelos) Compute the Solvent Excluded Image ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order, probe radius, spacing&lt;br /&gt;
# Output: Solvent Excluded Image of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros) Calculate the optimal bounding box of the protein chain using CGAL&#039;s implementation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Angelos) Create the Solvent Accessible image by creating spheres for each atom that their radius is: Van der Waals radius + probe radius. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos) Perform Euclidean Distance Transform on the Solvent Accessible image using the &#039;&#039;&#039;itk::SignedMaurerDistanceMapImageFilter&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
## (Spiros) Extract Solvent Excluded image from the EDT result by setting: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### All pixel values &amp;lt; probe-radius - truncationError[atomType] - paddingDistance = 0&lt;br /&gt;
### All pixel values &amp;gt;= probe-radius - truncationError[atomType] - paddingDistance = 1&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros) Handle the calculation of truncationError[atomType] in a thread-safe way by sorting the atoms by radius in descending order [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Truncation error is caused because of the spacing of the image.&lt;br /&gt;
## (Spiros/Angelos) Select a paddingDistance value to help PODM3D produce an accurate surface [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Close holes that should not exist using the distance of the pixel point vs the actual atom [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Create smaller images using the concept that is described in the EDTSurf paper [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Compute the Solvent Excluded Surface (&#039;&#039;&#039;SES&#039;&#039;&#039;)===&lt;br /&gt;
# Input: Solvent Excluded Image of a chain&lt;br /&gt;
# Output: Solvent Excluded Surface of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, produce a volumetric mesh of the image. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, extract the volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;vtkDataSetSurfaceFilter&#039;&#039;&#039;, extract the surface of volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039; this filter is used because when PODM is extracting the surface, its triangles are oriented the wrong way.&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Advantages:&lt;br /&gt;
## Can control the number of elements on the surface&lt;br /&gt;
## the edge lengths bounds are relatively small which helps in the clustering.&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Select a default delta value. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fix volume grading crashing. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Surface needs to be smoothed. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Extract Atom Types of surface points ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain surface and a Polydata of the unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Output: Atom Types of surface points of the unique protein chain surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using a KD-tree, for each surface point, find the closest atom: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If the surface point is within the radius of the closest atom, assign the atom type of the closest point to the surface point&lt;br /&gt;
### Else, assign &#039;&#039;&#039;0&#039;&#039;&#039;, which means the surface point is part of the re-entrance surface.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Find an ideal offset distance value between the surface points and their closest atoms to improve accuracy. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Generate the Symmetric Protein chain surfaces ===&lt;br /&gt;
# Input: A vector of the unique protein chain surfaces and the Symmetry information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;SymmetricProteinChainsSurface&#039;&#039;&#039; filter that generates the non unique protein chain surfaces using the Symmetry information. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Assign Model and Chain arrays on SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces &amp;amp; model and chains information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;AssignModelAndChain&#039;&#039;&#039; filter that assigns the model and chain arrays for each protein chain surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Merge Protein Chain SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Output: Solvent Excluded Surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;MergeSurfaces&#039;&#039;&#039; filter that merges all the protein-chains surfaces into one and forms the solvent excluded surface of the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Compute ambient occlusion of the SES === &lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Ambient Occlusion values of surface points, normals of surface points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos/Spiros) Using IGL Library, which uses [https://www.embree.org/ Embree] and [https://eigen.tuxfamily.org/dox/ Eigen], calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Using the CUDA and Optix library, calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: GPU parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros/Angelos) Eliminate the noise that is created due to the non-smoothed &#039;&#039;&#039;PODM3D&#039;&#039;&#039; surface by assigning for each vertex the average ambient occlusion value of its neighbors + itself. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Use the symmetry information to minimize the memory footprint for CPU and GPU [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Compute Surface Statistics ===&lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Statistics of Surface Triangles&#039; Edges&lt;br /&gt;
# Algoritmic step:&lt;br /&gt;
## Compute min/mean/median/max edge lengths of the surface triangles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Cavity Detection ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Ambient Occlusion values of surface points, Surface Statistics&lt;br /&gt;
# Output: Protein Cavities&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a modified version of the clustering method &#039;&#039;&#039;DBSCAN&#039;&#039;&#039;, that finds neighbors based on their density &#039;&#039;&#039;and&#039;&#039;&#039; ambient occlusion values, form clusters that define protein cavities. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Idea 1: [https://link.springer.com/article/10.1023/A:1009884809343 A Fast Parallel Clustering Algorithm for Large Spatial Databases PDBSCAN]&lt;br /&gt;
#### Idea 2: Speculative Execution using &#039;&#039;&#039;PREMA&#039;&#039;&#039;&lt;br /&gt;
## (Angelos) Implement a rendering framework to visualize the clustering process using &#039;&#039;&#039;VTK&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Tune the clustering parameters:&lt;br /&gt;
### (Spiros) Search-radius = 2 * minEdgeLength of the surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Esp = 8. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Min cavity size = cavityFactor * delta^-2.178. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Default value of cavityFactor = 20.&lt;br /&gt;
## Limit the expansion of the cavity by using: &lt;br /&gt;
### (Spiros) A relative threshold for the difference an occlusion value from the average occlusion value of the cluster. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Define weights for the occlusion values, and convert the mean to a weighted mean. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Define occlusion values bounds to detect different types of cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## [https://dl.acm.org/doi/abs/10.1145/304181.304187 OPTICS: ordering points to identify the clustering structure] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Use symmetry information to quickly detect the per-model cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Angelos) Map Electrostatics Potentials on Surface Points ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Electrostatic Potentials Image &#039;&#039;&#039;ESP&#039;&#039;&#039; of [http://www.poissonboltzmann.org/ APBS], normals of surface points, probe radius, lowerThreshold-upperThreshold&lt;br /&gt;
# Output: Electrostatic values of surface points&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros/Angelos) For each surface point: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Scale the point using normals, and probe radius to the solvent-accessible surface, &lt;br /&gt;
### Get the value of the closest pixel from the &#039;&#039;&#039;ESP&#039;&#039;&#039; to the scaled point:&lt;br /&gt;
#### If value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
#### Else if, value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
#### Else get the interpolated value of the scaled points from the image:&lt;br /&gt;
##### If interpolated value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
##### Else if, interpolated value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos/Spiros) Create reader of the [https://www.ics.uci.edu/~dock/manuals/apbs/html/user-guide/x2674.html OpenDx] file format that is used as output by APBS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Select Clustered cavity points ===&lt;br /&gt;
# Input: Labeled Solvent Surface Surface&lt;br /&gt;
# Output: Labeled clustered cavity points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a SelectPoints filter. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Select only the points that are clustered at the cavity detection step. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: this is done to improve the speed of writing the output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Write Results:  ===&lt;br /&gt;
# Input: Labeled clustered cavity points or Labeled Solvent Surface Surface&lt;br /&gt;
# Output: solventSurface.vtp&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a vtkXMLPolyDataWriter, write the output file. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Create a writer, just for the cavities to minimize the IO. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Idea: See &#039;&#039;&#039;Fpocket&#039;&#039;&#039;.&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Note: a Paraview plugin may be developed for visualization purposes. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Classify cavity type ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Atomic Cavities, Atom Types of surface points&lt;br /&gt;
# Output: Labeled atomic Cavities&lt;br /&gt;
# Algorithm steps:&lt;br /&gt;
# Ideas that might be used: &lt;br /&gt;
## Ambient occlusion values based classification using mean distance cluster value [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Analyze the shape of clusters to identify what type of cavity they are. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### This can potentially be done using machine learning.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== GPCD vs MOLE ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| GPCD&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| MOLE&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Surface Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Interior Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Visualize Exact Channel Shape&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Very Large Molecules&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO (very slow)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Multi-Model Files&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Parallelization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Relative Performance&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | VERY FAST&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | SLOW&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Intuitive Visualization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| False Positives&lt;br /&gt;
| style=&amp;quot;background-color: orange; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Quantify Major Structural Features&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Paper and Presenation ==&lt;br /&gt;
[https://docs.google.com/presentation/d/1rYKfxhgCc9oUKI3xEZ0gLZQOapG64C2-6hNvoDtdpXY/edit?usp=sharing Presentation]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rbvi.ucsf.edu/chimerax/ UCSF ChimeraX]&#039;&#039;&#039;: Next-generation molecular visualization program from the Resource for Biocomputing, Visualization, and Informatics (RBVI).&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/vmd/ VMD]&#039;&#039;&#039;: Molecular visualization program for displaying, animating, and analyzing large biomolecular systems using 3D graphics and built-in scripting. Used in conjunction with NAMD for visualizing molecular dynamics simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/namd/ NAMD]&#039;&#039;&#039;: Parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. Scales to hundreds of cores for typical simulations and beyond 500,000 cores for the largest simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/Platform/App/Mole MOLE]&#039;&#039;&#039;: Universal toolkit for rapid location and characterization of channels and pores in biomacromolecules.&lt;br /&gt;
* &#039;&#039;&#039;[https://caver.cz/ CAVER]&#039;&#039;&#039;: Software tool for the analysis and visualization of tunnels and channels in protein structures.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/ RCSB PDB Protein Data Bank]&#039;&#039;&#039;: The largest and most popular database of protein structures.&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5839519/ Survey: Geometric Protein Cavity Detection Algorithms]&#039;&#039;&#039;: Paper surveying the current geometric algorithms for protein cavity detection. This is a great resource for understanding this project.&lt;br /&gt;
* &#039;&#039;&#039;[https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-39 MOLE 2.0]&#039;&#039;&#039;: Paper describing the MOLE 2.0 protein cavity detection software. Contains a good algorithm that can be used for extracting a good approximation of the surface of a point cloud of atoms.&lt;br /&gt;
* &#039;&#039;&#039;[https://reader.elsevier.com/reader/sd/pii/S0969212607003759?token=4D0F6192E971D4406E8F7CBA047B0490C8715EBD67579D26427E0E63BD0298BEBF948DB238A28E4EAE2D17EBC6DF4E50 MOLE 1.0]&#039;&#039;&#039;: Paper describing the MOLE 1.0 algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/epdf/10.1002/prot.22052 MolAxis]&#039;&#039;&#039;: Paper describing the MolAxis protein cavity detection software.&lt;br /&gt;
* &#039;&#039;&#039;[https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002708 CAVER 3.0]&#039;&#039;&#039;: Paper describing the CAVER 3.0 protein cavity detection software. This algorithm specializes in identifying tunnels.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.sciencedirect.com/science/article/abs/pii/S0022283606008746 Travel Depth]&#039;&#039;&#039;: Paper describing the &amp;quot;travel depth&amp;quot; algorithm for protein cavity visualization.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/full/10.1111/cgf.12120 GPU Protein Cavity Detection using Ambient Occlusion]&#039;&#039;&#039;: Paper describing a GPU-based protein cavity detection algorithm that utilizes Ambient Occlusion.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf DBSCAN]&#039;&#039;&#039;: Paper describing the DBSCAN clustering algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://link.springer.com/article/10.1023/A:1009884809343 PDBSCAN]&#039;&#039;&#039;: Paper describing a parallel version of DBSCAN.&lt;br /&gt;
* &#039;&#039;&#039;[https://pubmed.ncbi.nlm.nih.gov/31133031/ Coronavirus envelope protein]&#039;&#039;&#039;: Paper describing research on the envelope protein of coronaviruses.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.cell.com/biophysj/fulltext/S0006-3495(20)33168-4 COVID-19 virion model]&#039;&#039;&#039;: Paper describing a detail model of the SARS-CoV-2 virus particle.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7685317/pdf/nihpp-2020.11.19.390187.pdf COVID-19 simulation]&#039;&#039;&#039;: Paper describing large-scale COVID-19 simulations.&lt;br /&gt;
&lt;br /&gt;
=== Organizations/Groups ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/ University of Illinois at Urbana-Champaign: Theoretical and Computational Biophysics Group]&#039;&#039;&#039;: Perhaps the most important group in molecular dynamics. Developers of VMD and NAMD. Ran the simulation for the 200 million atom model of COVID-19.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/ Oak Ridge National Laboratory (ORNL)]&#039;&#039;&#039;: Major national lab with active involvement in drug discovery and design using supercomputers.&lt;br /&gt;
* &#039;&#039;&#039;[http://rbvi.ucsf.edu/ Resource for Biocomputing, Visualization, and Informatics (RBVI)]&#039;&#039;&#039;: Developers of UCSF Chimera and UCSF ChimeraX.&lt;br /&gt;
* &#039;&#039;&#039;[https://ist.ac.at/en/research/edelsbrunner-group/ IST Austria: Edelsbrunner Group]&#039;&#039;&#039;: Important group in algorithms, computational geometry, and computational topology. Involved with protein cavity detection in the past and potentially involved now. The head of the group, Edelsbrunner created alpha shapes.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tacc.utexas.edu/systems/frontera Texas Advanced Computing Center]&#039;&#039;&#039;: Maintainers of the Frontera supercomputer, the fifth fastest supercomputer in the world (2020). The simulation for the 200 million atom model of COVID-19 was executed on this supercomputer.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/ WebChemistry]&#039;&#039;&#039;: Developed MOLE and many other software tools related to molecular analysis.&lt;br /&gt;
&lt;br /&gt;
=== Important Links ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.hpcwire.com/off-the-wire/coronavirus-massive-simulations-completed-on-frontera-supercomputer/ COVID-19 200 million atom NAMD simulation]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/news/early-research-existing-drug-compounds-supercomputing-could-combat-coronavirus/ ORNL COVID-19 spike drug identification]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Proteins ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/1jj2 Large Ribosomal Subunit (98,693 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VXX COVID-19 Spike Glycoprotein, Closed State (23,694 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6Y2E COVID-19 Main Protease (5,370 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VWW COVID-19 NSP15 Endoribonuclease (24,036 atoms)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] Simões, T., Lopes, D., Dias, S., Fernandes, F., Pereira, J., Jorge, J., Bajaj, C., &amp;amp; Gomes, A. (2017). Geometric Detection Algorithms for Cavities on Protein Surfaces in Molecular Graphics: A Survey. Computer graphics forum : journal of the European Association for Computer Graphics, 36(8), 643–683. https://doi.org/10.1111/cgf.13158&lt;br /&gt;
&lt;br /&gt;
[2] Yaffe, Fishelovitch, Wolfson, Halperin, &amp;amp; Nussinov. (2008). MolAxis: Efficient and accurate identification of channels in macromolecules. Proteins: Structure, Function, and Bioinformatics, 73(1), 72-86.&lt;br /&gt;
&lt;br /&gt;
[3] Coleman, R. G., &amp;amp; Sharp, K. A. (2006). Travel depth, a new shape descriptor for macromolecules: application to ligand binding. Journal of molecular biology, 362(3), 441–458. https://doi.org/10.1016/j.jmb.2006.07.022&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8478</id>
		<title>Internal:GPCD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8478"/>
		<updated>2021-06-03T17:40:55Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavities ===&lt;br /&gt;
Cavities are structural features of proteins and they are often important for drug discovery and design. There are different kinds of cavities, including pockets, voids, tunnels, and channels. The types of cavities are listed in more detail in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityTypes.jpg|center|frame| Figure 1: The basic types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Void&#039;&#039;&#039;: A cavity that looks like internal &amp;quot;hole&amp;quot; in a protein with no connection to the surface.&lt;br /&gt;
# &#039;&#039;&#039;Cleft&#039;&#039;&#039;: A pocket that looks like a &amp;quot;dent&amp;quot; in the surface of a protein. Can also be found as part of a tunnel or channel.&lt;br /&gt;
# &#039;&#039;&#039;Invagination&#039;&#039;&#039;: A pocket that looks like a &amp;quot;cove&amp;quot;. It has a small opening on the surface of a protein and leads to a larger interior. Can also be found as part of a tunnel or after a cleft.&lt;br /&gt;
# &#039;&#039;&#039;Tunnel&#039;&#039;&#039;: A pocket that has an opening on the surface of a protein and leads to somewhere in the interior. Has no opening on the other side.&lt;br /&gt;
# &#039;&#039;&#039;Channel&#039;&#039;&#039;: A cavity that has an opening on one side of the surface of a protein and leads to another opening in another location on the surface of the protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course, the types of cavities listed in figure 1 are only the basic ones. Combinations of these are also possible as shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityAdvancedTypes.jpg|center|frame| Figure 2: Combination types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavity Detection Methods ===&lt;br /&gt;
There are several methods for detecting protein cavities. There are sphere based methods, grid based methods, grid-and-sphere based methods, surface based methods, grid-and-surface based methods, time-varying methods, GPU based methods, consensus based methods, and finally tessellation based methods. These algorithms are shown in more detail in figure 3. Tessellation based methods mainly rely on Voronoi tessellation. Some methods rely on weighted Voronoi tessellation because of its ability to more accurately represent the volume of atoms. The Voronoi tessellation in these methods is computed from a set of points representing the atomic centers of the underlying protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityDetectionAlgorithms.jpg|center|frame| Figure 3: A hierarchy of protein cavity detection algorithms [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literature Review ==&lt;br /&gt;
&lt;br /&gt;
=== MOLE ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MOLE algorithm is specifically designed to identify tunnels and channels. Finding superficial cavities is a secondary concern and does so as part of the surface approximation step. MOLE utilizes the surface obtained by the refinement of the convex hull to find superficial cavities such as clefts and invaginations. In essence, the approximation of a more accurate surface and the detection of these superficial cavities are closely related. As tetrahedra are removed from the convex hull to get a more accurate surface approximation, a parameter called &#039;&#039;interior threshold&#039;&#039; controls how many superficial cavities are found. For example, if the number of tetrahedra removed from a specific part of the molecule exceeds this threshold, the algorithm marks these tetrahedra as part of a superficial cavity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:moleVoronoiTunnelPath.jpg|center|frame| Figure 4: Shows in 2D the Voronoi diagram (thin lines) and the convex hull (dotted line) of molecule represented by atoms (circles). Each Voronoi edge is evaluated by the cost function (numbers). The thick line represents the optimal path found by the Dijkstra&#039;s algorithm from the given starting point (black circle), i.e., centerline of found tunnel. [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the more complicated types of cavities, tunnels and channels, MOLE uses the Voronoi diagram to identify them. Start and end points are defined as the centers of the deepest tetrahedra in each cavity. The depth of the tetrahedron is defined as the number of Voronoi edges from the closest boundary tetrahedron (on the surface). Tunnels/channels are computed as the shortest paths between all pairs of start and end points in the same cavity diagram.&lt;br /&gt;
&lt;br /&gt;
[[File:MoleDijkstraWeightFunction.png|center|frame| Figure 5: Shows the weight function used to estimate the weight of each Voronoi edge for Dijkstra&#039;s algorihtm. l(e) is the length of the edge, d(e) is the distance of the edge to the closest atom Van der Waals sphere and ϵ is a small number to avoid division by zero [1]]]&lt;br /&gt;
&lt;br /&gt;
==== Complexity ====&lt;br /&gt;
* Worst-case: O(N^2 log N), where N is the number of atoms in the molecule. &lt;br /&gt;
* Average: O(M log M), where M is the number of vertices in the Voronoi diagram (in the worst case, M = N^2, but in most cases M = O(N)). As a result of the use of the incremental algorithm and Hilbert curve ordering, the complexity of calculating the Delaunay triangulation of most molecular structures is O(N log N). Finally, the complexity of all the remaining steps of the algorithm is at most O(M log M).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MolAxis ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MolAxis algorithm relies on Voronoi and Dijkstra&#039;s algorithm to find channels, similarly to MOLE. The algorithm consists of the following high-level steps:&lt;br /&gt;
&lt;br /&gt;
# Approximate the molecule using a collection of &#039;&#039;&#039;fixed-size spheres&#039;&#039;&#039;. The number of balls needed depends on the required quality of the approximation. In the extreme case, where the user is interested in a high resolution, each atom is approximated using a single sphere. &lt;br /&gt;
# Compute the &#039;&#039;&#039;Voronoi diagram&#039;&#039;&#039; of the centers of the fixed-sized spheres. The diagram is intersected with a user-defined bounding sphere. This defines the area of interest.&lt;br /&gt;
# Discard the parts of the Voronoi diagram that intersect the molecule.&lt;br /&gt;
# Define a &#039;&#039;&#039;graph&#039;&#039;&#039;, using the Voronoi vertices and edges. A weight is given to each edge, which depends on its length and on its distance from the surface of the molecule. &lt;br /&gt;
# Define a &#039;&#039;&#039;source point (root vertex)&#039;&#039;&#039;. The user can either supply a source point or allow MolAxis to automatically choose the source point to be the &#039;&#039;&#039;center of the largest cavity in the molecule&#039;&#039;&#039; (basically detect channels inside-out).&lt;br /&gt;
# Apply a shortest path optimization algorithm (&#039;&#039;&#039;Dijktra&#039;s algorithm&#039;&#039;&#039;) on the graph, computing a tree called the &amp;quot;corridor tree&amp;quot;.&lt;br /&gt;
# The desired channels are paths in the corridor tree. Duplicate channels are avoided by using the split distance parameter. The split distance bounds the distance to the least common ancestor of the channel and all previously reported channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MolAxisVoronoi.png|center|frame| Figure 6: Shows an example of fixed-size circles (light-blue) approximating varying-size circles and the pathway diagram of their centers. The discarded portion of the Voronoi diagram of their centers is depicted using dotted lines [2]. This figure also helps illustrate the usefulness of the Voronoi tessellation in computing pathways.]]&lt;br /&gt;
&lt;br /&gt;
== Protein Energetics ==&lt;br /&gt;
=== Metrics ===&lt;br /&gt;
# &#039;&#039;&#039;Hydrophobicity&#039;&#039;&#039;: Physical property of a molecule that is seemingly repelled from a mass of water. Hydrophilic molecules are attracted to water. Hydrophobicity plays a major role in protein folding. Hydrophobic molecules also tend to be nonpolar and prefer other neutral molecules and nonpolar solvents. Hydrophobicity is the most widely used metric.&lt;br /&gt;
# &#039;&#039;&#039;Hydrogen Bonds&#039;&#039;&#039;: Weak bonds between two molecules resulting from an electrostatic attraction between a proton in one molecule and an electronegative atom in the other. We often see these bonds between oxygen and hydrogen.&lt;br /&gt;
# &#039;&#039;&#039;Van der Waals Interactions&#039;&#039;&#039;: Also known as Van der Waals forces, they are forces driven by induced electrical interactions between two or more atoms or molecules that are very close to each other. Van der Waals interaction is the weakest of all intermolecular attractions between molecules. These forces are distance-dependent.&lt;br /&gt;
# &#039;&#039;&#039;Salt Bridges&#039;&#039;&#039;: Non-covalent (no sharing of eletrons; electromagnetic) interaction between two ionized sites. It has two components: a hydrogen bond and an electrostatic interaction.&lt;br /&gt;
# &#039;&#039;&#039;Disulfide Bridges&#039;&#039;&#039;: Strong bonds that can form between two cysteines (an amino acid). The strength of disulfide bridges helps stabilize a protein. Disulfide bridges are especially common in proteins that are secreted from cells.&lt;br /&gt;
# &#039;&#039;&#039;Charge&#039;&#039;&#039;: Plays a role in strength of bonds. A higher charge means that an atom will have stronger forces in an electromagnetic field.&lt;br /&gt;
# &#039;&#039;&#039;Polarity&#039;&#039;&#039;: Separation of electric charge leading to a molecule or its chemical groups having an electric dipole moment, with a negatively charged end and a positively charged end. Indicates the existence of polar bonds, which are covalent (sharing of electrons) and are quite strong. About [https://chem.libretexts.org/Bookshelves/Inorganic_Chemistry/Book%3A_Introduction_to_Inorganic_Chemistry/01%3A_Review_of_Chemical_Bonding/1.04%3A_Bond_Polarity_and_Bond_Strength bond polarity].&lt;br /&gt;
&lt;br /&gt;
== Candidate Method: Geometric Protein Cavities Detection (&#039;&#039;&#039;GPCD&#039;&#039;&#039;) ==&lt;br /&gt;
The Pipeline contains the following high-level algorithmic steps:&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Read protein ===&lt;br /&gt;
# Input: PDB file&lt;br /&gt;
# Output: A Polydata of the protein&lt;br /&gt;
# Algorithmic Step:&lt;br /&gt;
## (Angelos) Using vtkPDBReader, read the PDB file that included the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos) Upgrade vtkPDBReader to be able to manage multimodel proteins [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Fix vtkPDBReader error of setting wrong atom numbers [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Set up vtkPDBReader to utilize [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] for the Covalent radius and Van-der-Waals radius [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Improve [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] by using: [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### updated Van-der-Waals radius values provided by Los Alamos National Laboratory&lt;br /&gt;
### updated Covalent radius values provided by Cambridge Structural Database&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Extract unique protein Chains ===&lt;br /&gt;
# Input:  A Polydata of the protein&lt;br /&gt;
# Output: Unique protein chains without het-atoms and Symmetric Information&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a filter that removes the het-atoms and creates the polydata of the protein chains. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Detect the unique protein chains using Symmetry detection techniques ([https://en.wikipedia.org/wiki/Kabsch_algorithm Kabsch algorithm]) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Store the Symmetry information (rotation and translation). [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: This way we can mesh each unique chain individually&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Sort Atoms By Radius ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms&lt;br /&gt;
# Output: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using vtkSortFieldData we sort the non-Het atoms by radius in descending order. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed using vtkSMPTools [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Αngelos) Compute the Solvent Excluded Image ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order, probe radius, spacing&lt;br /&gt;
# Output: Solvent Excluded Image of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros) Calculate the optimal bounding box of the protein chain using CGAL&#039;s implementation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Angelos) Create the Solvent Accessible image by creating spheres for each atom that their radius is: Van der Waals radius + probe radius. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos) Perform Euclidean Distance Transform on the Solvent Accessible image using the &#039;&#039;&#039;itk::SignedMaurerDistanceMapImageFilter&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
## (Spiros) Extract Solvent Excluded image from the EDT result by setting: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### All pixel values &amp;lt; probe-radius - truncationError[atomType] - paddingDistance = 0&lt;br /&gt;
### All pixel values &amp;gt;= probe-radius - truncationError[atomType] - paddingDistance = 1&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros) Handle the calculation of truncationError[atomType] in a thread-safe way by sorting the atoms by radius in descending order [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Truncation error is caused because of the spacing of the image.&lt;br /&gt;
## (Spiros/Angelos) Select a paddingDistance value to help PODM3D produce an accurate surface [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Close holes that should not exist using the distance of the pixel point vs the actual atom [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Create smaller images using the concept that is described in the EDTSurf paper [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Compute the Solvent Excluded Surface (&#039;&#039;&#039;SES&#039;&#039;&#039;)===&lt;br /&gt;
# Input: Solvent Excluded Image of a chain&lt;br /&gt;
# Output: Solvent Excluded Surface of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, produce a volumetric mesh of the image. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, extract the volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;vtkDataSetSurfaceFilter&#039;&#039;&#039;, extract the surface of volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039; this filter is used because when PODM is extracting the surface, its triangles are oriented the wrong way.&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Advantages:&lt;br /&gt;
## Can control the number of elements on the surface&lt;br /&gt;
## the edge lengths bounds are relatively small which helps in the clustering.&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Select a default delta value. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fix volume grading crashing. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Surface needs to be smoothed. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Extract Atom Types of surface points ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain surface and a Polydata of the unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Output: Atom Types of surface points of the unique protein chain surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using a KD-tree, for each surface point, find the closest atom: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If the surface point is within the radius of the closest atom, assign the atom type of the closest point to the surface point&lt;br /&gt;
### Else, assign &#039;&#039;&#039;0&#039;&#039;&#039;, which means the surface point is part of the re-entrance surface.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Find an ideal offset distance value between the surface points and their closest atoms to improve accuracy. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Generate the Symmetric Protein chain surfaces ===&lt;br /&gt;
# Input: A vector of the unique protein chain surfaces and the Symmetry information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;SymmetricProteinChainsSurface&#039;&#039;&#039; filter that generates the non unique protein chain surfaces using the Symmetry information. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Assign Model and Chain arrays on SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces &amp;amp; model and chains information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;AssignModelAndChain&#039;&#039;&#039; filter that assigns the model and chain arrays for each protein chain surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Merge Protein Chain SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Output: Solvent Excluded Surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;MergeSurfaces&#039;&#039;&#039; filter that merges all the protein-chains surfaces into one and forms the solvent excluded surface of the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Compute ambient occlusion of the SES === &lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Ambient Occlusion values of surface points, normals of surface points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos/Spiros) Using IGL Library, which uses [https://www.embree.org/ Embree] and [https://eigen.tuxfamily.org/dox/ Eigen], calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Using the CUDA and Optix library, calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: GPU parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros/Angelos) Eliminate the noise that is created due to the non-smoothed &#039;&#039;&#039;PODM3D&#039;&#039;&#039; surface by assigning for each vertex the average ambient occlusion value of its neighbors + itself. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Use the symmetry information to minimize the memory footprint for CPU and GPU [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Compute Surface Statistics ===&lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Statistics of Surface Triangles&#039; Edges&lt;br /&gt;
# Algoritmic step:&lt;br /&gt;
## Compute min/mean/median/max edge lengths of the surface triangles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Cavity Detection ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Ambient Occlusion values of surface points, Surface Statistics&lt;br /&gt;
# Output: Protein Cavities&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a modified version of the clustering method &#039;&#039;&#039;DBSCAN&#039;&#039;&#039;, that finds neighbors based on their density &#039;&#039;&#039;and&#039;&#039;&#039; ambient occlusion values, form clusters that define protein cavities. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Idea 1: [https://link.springer.com/article/10.1023/A:1009884809343 A Fast Parallel Clustering Algorithm for Large Spatial Databases PDBSCAN]&lt;br /&gt;
#### Idea 2: Speculative Execution using &#039;&#039;&#039;PREMA&#039;&#039;&#039;&lt;br /&gt;
## (Angelos) Implement a rendering framework to visualize the clustering process using &#039;&#039;&#039;VTK&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Tune the clustering parameters:&lt;br /&gt;
### (Spiros) Search-radius = 2 * minEdgeLength of the surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Esp = 8. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Min cavity size = cavityFactor * delta^-2.178. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Default value of cavityFactor = 20.&lt;br /&gt;
## Limit the expansion of the cavity by using: &lt;br /&gt;
### (Spiros) A relative threshold for the difference an occlusion value from the average occlusion value of the cluster. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Define weights for the occlusion values, and convert the mean to a weighted mean. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Define occlusion values bounds to detect different types of cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## [https://dl.acm.org/doi/abs/10.1145/304181.304187 OPTICS: ordering points to identify the clustering structure] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Use symmetry information to quickly detect the per-model cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Angelos) Map Electrostatics Potentials on Surface Points ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Electrostatic Potentials Image &#039;&#039;&#039;ESP&#039;&#039;&#039; of [http://www.poissonboltzmann.org/ APBS], normals of surface points, probe radius, lowerThreshold-upperThreshold&lt;br /&gt;
# Output: Electrostatic values of surface points&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros/Angelos) For each surface point: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Scale the point using normals, and probe radius to the solvent-accessible surface, &lt;br /&gt;
### Get the value of the closest pixel from the &#039;&#039;&#039;ESP&#039;&#039;&#039; to the scaled point:&lt;br /&gt;
#### If value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
#### Else if, value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
#### Else get the interpolated value of the scaled points from the image:&lt;br /&gt;
##### If interpolated value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
##### Else if, interpolated value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos/Spiros) Create reader of the [https://www.ics.uci.edu/~dock/manuals/apbs/html/user-guide/x2674.html OpenDx] file format that is used as output by APBS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Select Clustered cavity points ===&lt;br /&gt;
# Input: Labeled Solvent Surface Surface&lt;br /&gt;
# Output: Labeled clustered cavity points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a SelectPoints filter. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Select only the points that are clustered at the cavity detection step. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: this is done to improve the speed of writing the output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Write Results:  ===&lt;br /&gt;
# Input: Labeled clustered cavity points or Labeled Solvent Surface Surface&lt;br /&gt;
# Output: solventSurface.vtp&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a vtkXMLPolyDataWriter, write the output file. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Create a writer, just for the cavities to minimize the IO. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Idea: See &#039;&#039;&#039;Fpocket&#039;&#039;&#039;.&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Note: a Paraview plugin may be developed for visualization purposes. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Classify cavity type ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Atomic Cavities, Atom Types of surface points&lt;br /&gt;
# Output: Labeled atomic Cavities&lt;br /&gt;
# Algorithm steps:&lt;br /&gt;
# Ideas that might be used: &lt;br /&gt;
## Ambient occlusion values based classification using mean distance cluster value [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Analyze the shape of clusters to identify what type of cavity they are. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### This can potentially be done using machine learning.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== GPCD vs MOLE ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| GPCD&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| MOLE&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Surface Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Interior Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Visualize Exact Channel Shape&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Very Large Molecules&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO (very slow)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Multi-Model Files&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Parallelization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Relative Performance&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | VERY FAST&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | SLOW&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Intuitive Visualization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| False Positives&lt;br /&gt;
| style=&amp;quot;background-color: orange; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Quantify Major Structural Features&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Paper and Presenation ==&lt;br /&gt;
[[https://docs.google.com/presentation/d/1rYKfxhgCc9oUKI3xEZ0gLZQOapG64C2-6hNvoDtdpXY/edit?usp=sharing Presentation]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rbvi.ucsf.edu/chimerax/ UCSF ChimeraX]&#039;&#039;&#039;: Next-generation molecular visualization program from the Resource for Biocomputing, Visualization, and Informatics (RBVI).&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/vmd/ VMD]&#039;&#039;&#039;: Molecular visualization program for displaying, animating, and analyzing large biomolecular systems using 3D graphics and built-in scripting. Used in conjunction with NAMD for visualizing molecular dynamics simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/namd/ NAMD]&#039;&#039;&#039;: Parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. Scales to hundreds of cores for typical simulations and beyond 500,000 cores for the largest simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/Platform/App/Mole MOLE]&#039;&#039;&#039;: Universal toolkit for rapid location and characterization of channels and pores in biomacromolecules.&lt;br /&gt;
* &#039;&#039;&#039;[https://caver.cz/ CAVER]&#039;&#039;&#039;: Software tool for the analysis and visualization of tunnels and channels in protein structures.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/ RCSB PDB Protein Data Bank]&#039;&#039;&#039;: The largest and most popular database of protein structures.&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5839519/ Survey: Geometric Protein Cavity Detection Algorithms]&#039;&#039;&#039;: Paper surveying the current geometric algorithms for protein cavity detection. This is a great resource for understanding this project.&lt;br /&gt;
* &#039;&#039;&#039;[https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-39 MOLE 2.0]&#039;&#039;&#039;: Paper describing the MOLE 2.0 protein cavity detection software. Contains a good algorithm that can be used for extracting a good approximation of the surface of a point cloud of atoms.&lt;br /&gt;
* &#039;&#039;&#039;[https://reader.elsevier.com/reader/sd/pii/S0969212607003759?token=4D0F6192E971D4406E8F7CBA047B0490C8715EBD67579D26427E0E63BD0298BEBF948DB238A28E4EAE2D17EBC6DF4E50 MOLE 1.0]&#039;&#039;&#039;: Paper describing the MOLE 1.0 algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/epdf/10.1002/prot.22052 MolAxis]&#039;&#039;&#039;: Paper describing the MolAxis protein cavity detection software.&lt;br /&gt;
* &#039;&#039;&#039;[https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002708 CAVER 3.0]&#039;&#039;&#039;: Paper describing the CAVER 3.0 protein cavity detection software. This algorithm specializes in identifying tunnels.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.sciencedirect.com/science/article/abs/pii/S0022283606008746 Travel Depth]&#039;&#039;&#039;: Paper describing the &amp;quot;travel depth&amp;quot; algorithm for protein cavity visualization.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/full/10.1111/cgf.12120 GPU Protein Cavity Detection using Ambient Occlusion]&#039;&#039;&#039;: Paper describing a GPU-based protein cavity detection algorithm that utilizes Ambient Occlusion.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf DBSCAN]&#039;&#039;&#039;: Paper describing the DBSCAN clustering algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://link.springer.com/article/10.1023/A:1009884809343 PDBSCAN]&#039;&#039;&#039;: Paper describing a parallel version of DBSCAN.&lt;br /&gt;
* &#039;&#039;&#039;[https://pubmed.ncbi.nlm.nih.gov/31133031/ Coronavirus envelope protein]&#039;&#039;&#039;: Paper describing research on the envelope protein of coronaviruses.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.cell.com/biophysj/fulltext/S0006-3495(20)33168-4 COVID-19 virion model]&#039;&#039;&#039;: Paper describing a detail model of the SARS-CoV-2 virus particle.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7685317/pdf/nihpp-2020.11.19.390187.pdf COVID-19 simulation]&#039;&#039;&#039;: Paper describing large-scale COVID-19 simulations.&lt;br /&gt;
&lt;br /&gt;
=== Organizations/Groups ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/ University of Illinois at Urbana-Champaign: Theoretical and Computational Biophysics Group]&#039;&#039;&#039;: Perhaps the most important group in molecular dynamics. Developers of VMD and NAMD. Ran the simulation for the 200 million atom model of COVID-19.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/ Oak Ridge National Laboratory (ORNL)]&#039;&#039;&#039;: Major national lab with active involvement in drug discovery and design using supercomputers.&lt;br /&gt;
* &#039;&#039;&#039;[http://rbvi.ucsf.edu/ Resource for Biocomputing, Visualization, and Informatics (RBVI)]&#039;&#039;&#039;: Developers of UCSF Chimera and UCSF ChimeraX.&lt;br /&gt;
* &#039;&#039;&#039;[https://ist.ac.at/en/research/edelsbrunner-group/ IST Austria: Edelsbrunner Group]&#039;&#039;&#039;: Important group in algorithms, computational geometry, and computational topology. Involved with protein cavity detection in the past and potentially involved now. The head of the group, Edelsbrunner created alpha shapes.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tacc.utexas.edu/systems/frontera Texas Advanced Computing Center]&#039;&#039;&#039;: Maintainers of the Frontera supercomputer, the fifth fastest supercomputer in the world (2020). The simulation for the 200 million atom model of COVID-19 was executed on this supercomputer.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/ WebChemistry]&#039;&#039;&#039;: Developed MOLE and many other software tools related to molecular analysis.&lt;br /&gt;
&lt;br /&gt;
=== Important Links ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.hpcwire.com/off-the-wire/coronavirus-massive-simulations-completed-on-frontera-supercomputer/ COVID-19 200 million atom NAMD simulation]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/news/early-research-existing-drug-compounds-supercomputing-could-combat-coronavirus/ ORNL COVID-19 spike drug identification]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Proteins ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/1jj2 Large Ribosomal Subunit (98,693 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VXX COVID-19 Spike Glycoprotein, Closed State (23,694 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6Y2E COVID-19 Main Protease (5,370 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VWW COVID-19 NSP15 Endoribonuclease (24,036 atoms)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] Simões, T., Lopes, D., Dias, S., Fernandes, F., Pereira, J., Jorge, J., Bajaj, C., &amp;amp; Gomes, A. (2017). Geometric Detection Algorithms for Cavities on Protein Surfaces in Molecular Graphics: A Survey. Computer graphics forum : journal of the European Association for Computer Graphics, 36(8), 643–683. https://doi.org/10.1111/cgf.13158&lt;br /&gt;
&lt;br /&gt;
[2] Yaffe, Fishelovitch, Wolfson, Halperin, &amp;amp; Nussinov. (2008). MolAxis: Efficient and accurate identification of channels in macromolecules. Proteins: Structure, Function, and Bioinformatics, 73(1), 72-86.&lt;br /&gt;
&lt;br /&gt;
[3] Coleman, R. G., &amp;amp; Sharp, K. A. (2006). Travel depth, a new shape descriptor for macromolecules: application to ligand binding. Journal of molecular biology, 362(3), 441–458. https://doi.org/10.1016/j.jmb.2006.07.022&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:PODM_3D&amp;diff=8477</id>
		<title>Internal:PODM 3D</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:PODM_3D&amp;diff=8477"/>
		<updated>2021-06-03T17:35:43Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Documentation=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Read [https://crtc.cs.odu.edu/pub/papers/journal_56.pdf PODM3D] paper✔&lt;br /&gt;
# Read [https://crtc.cs.odu.edu/pub/papers/journal_58.pdf Guaranteed Quality Tetrahedral Delaunay Meshing for Medical Images] paper (Sect. 9) (TODO)&lt;br /&gt;
# Write a proper README.md file✔&lt;br /&gt;
# Add the [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] into the Appendix of the November Report✔&lt;br /&gt;
# Create [https://crtc.cs.odu.edu/Internal:CNF_Adaptivity CNF Adaptivity] Report&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create a [https://crtc.cs.odu.edu/CRTC_I2M User Manual] for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔&lt;br /&gt;
&lt;br /&gt;
=Execution Examples=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create meshes for the Medical Image Computing part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/Medical_Imaging_Example_Meshes Medical Imaging Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Create meshes for the Bioinformatics part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/Bioinformatics_Example_Meshes Bioinformatics Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Restructure repository of PODM3D based on Software engineering standards✔&lt;br /&gt;
# Decouple Args from PODM✔&lt;br /&gt;
# Create setArguments function✔&lt;br /&gt;
# Create setInputImage(ImageType::Pointer)✔&lt;br /&gt;
# Remove IOs from PODM✔&lt;br /&gt;
# Implement a sizing function that will work as an extra rule and it will use the points of the tetrahedron that is tested✔&lt;br /&gt;
## Create UML diagrams to understand the code and the Meshing Procedure in general✔&lt;br /&gt;
## Create a list of functions that need to be modified to implement the extra Rule ✔&lt;br /&gt;
## Modify the created list ([https://docs.google.com/spreadsheets/d/13M6qLRtS3wMH5B8vXwcqA-gP2b9p8QGwbhrn68VXoj0/edit#gid=0 Extra Rule sizing Function list]) of functions✔&lt;br /&gt;
## Create the following test sizing function to understand if modifications have been done correctly✔ &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
bool checkSizingFunction(double coordinatesOfTetrahedron**)&lt;br /&gt;
{&lt;br /&gt;
    double volume = volume(coordinatesOfTetrahedron);&lt;br /&gt;
    double* baryCenter = baryCenter(coordinatesOfTetrahedron)&lt;br /&gt;
    &lt;br /&gt;
    // if x axis &amp;lt;= 55 and volume of tetrahedron &amp;gt; 10&lt;br /&gt;
    if (baryCenter[0] &amp;lt;= 55 &amp;amp;&amp;amp; volume &amp;gt; 10)&lt;br /&gt;
       return true;&lt;br /&gt;
    else&lt;br /&gt;
       return false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
## Create the infrastructure to support Sizing Function pointer✔&lt;br /&gt;
## Incorporate Function Pointer to PODM by creating a setSizingFunction()✔&lt;br /&gt;
## Replace the test sizing function with the Adaptivity function that was created by Christos (The algorithm is described [https://crtc.cs.odu.edu/Internal:CNF_Adaptivity here])✔&lt;br /&gt;
### Understand that the current implementation supports negative weights✔&lt;br /&gt;
### Change the current implementation to use the minimum-maximum edge length of the element instead of its volume✔&lt;br /&gt;
### Identify an issue of checking sample points outside the image and solve it according to Christos&#039;s suggestions✔&lt;br /&gt;
# Separate the interface, the IOs and the filters from PODM✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create a general PODM driver✔&lt;br /&gt;
# Set a warning if delta &amp;gt; min-spacing * min-dimension-size / 5✔&lt;br /&gt;
# Set a default delta: ✔&lt;br /&gt;
## if sizing-function is off then default delta = min-spacing * min-dimension-size / 100 ✔&lt;br /&gt;
## if sizing-function is on then default delta = min-spacing * min-dimension-size / 20 ✔&lt;br /&gt;
# Remove labels array if there is only 1 label of interest ✔&lt;br /&gt;
# Print a warning if a label is not recovered✔&lt;br /&gt;
# Add Numa flag in CmakeLists.txt ✔&lt;br /&gt;
# Add binary file support ✔&lt;br /&gt;
# Improve Text output ✔&lt;br /&gt;
# Create label-filter for images ✔&lt;br /&gt;
## Preserve a set of labels of an image ✔&lt;br /&gt;
## Exclude a set of labels of an image ✔&lt;br /&gt;
# Remove redundant volume threshold checks that don&#039;t contribute anything to the meshing procedure ✔&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Libraries:&lt;br /&gt;
## Update ITK to v5.1.0 ✔&lt;br /&gt;
## Update VTK to v9.0.1 ✔&lt;br /&gt;
## Remove Boost from PODM (preserve it only for CGAL) ✔&lt;br /&gt;
# Save the label of a cell after its creation and Remove the expensive label recalculation in GetCleanMesh/GetCleanMeshParallel✔&lt;br /&gt;
# Compute Mesh Results in Parallel (TODO)&lt;br /&gt;
## Implement Parallel version of GetCleanMesh function ✔&lt;br /&gt;
## Testing ✔&lt;br /&gt;
## Speed-Up [[File:mesh-results-speed-up.png|500px|File:mesh-results-speed-up.png]] ✔&lt;br /&gt;
## Assigned as default ✔&lt;br /&gt;
# Upgrade the define NO_IO_WRITING&lt;br /&gt;
## Rename it to IO_WRITING ✔&lt;br /&gt;
## Create functions for loading and writing of auxiliary files ✔&lt;br /&gt;
## Create a compile flag for it, which will also enable the creation of the auxiliary files folder ✔&lt;br /&gt;
## Fix truncation error when loading box ✔&lt;br /&gt;
# Compute Box, Resized image and surface in Parallel ✔&lt;br /&gt;
## Implement Parallel version of ComputeBoxAndSurface function ✔&lt;br /&gt;
## Testing ✔&lt;br /&gt;
## Speed-Up [[File:box-surface-speed-up.png|500px|File:box-surface-speed-up.png]]✔&lt;br /&gt;
## Assigned as default ✔&lt;br /&gt;
# Sizing function:&lt;br /&gt;
## Control min edge and max edge using a percentage of the diagonal ✔&lt;br /&gt;
## Find values of samples points using linear interpolation ✔&lt;br /&gt;
&lt;br /&gt;
==Fall 2020==&lt;br /&gt;
# Fix shift of origin if delta not multiple of the spacing ✔&lt;br /&gt;
# Handle CNF images with spacing different than 1, and origin different than {0, 0, 0} ✔&lt;br /&gt;
## Upgrade Image Segmentation ✔&lt;br /&gt;
## Upgrade Sizing function ✔&lt;br /&gt;
## Upgrade Linear Interpolation ✔&lt;br /&gt;
# Change ImageSegmentation to create an image inside the requested grid domain ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
# [Christos] Addition of Extra points at the beginning of meshing ✔&lt;br /&gt;
# [Polykarpos] Loading and saving the state of PODM mesher ✔&lt;br /&gt;
# Load Dynamically Sizing Functions and their initialization as a shared Library using function pointers ✔&lt;br /&gt;
# Detect special cases of Christos and Polykarpos additions ✔&lt;br /&gt;
# Accept double instead of float type precision images ✔&lt;br /&gt;
# Add a vector of weights for each vertex ✔&lt;br /&gt;
# Add a vector of sizing functions for each thread ✔&lt;br /&gt;
==Summer 2021==&lt;br /&gt;
# Integrate PODM3D of APBNRR with the latest PODM3D (TODO)&lt;br /&gt;
# Fix add points issue (TODO)&lt;br /&gt;
# Fix PODM not working on Wahab (TODO)&lt;br /&gt;
# Remeshing by using a mesh instead of an image as input and background mesh (TODO)&lt;br /&gt;
# Replace CGAL Predicates with: (TODO)&lt;br /&gt;
## Predicates Construction Kit:&lt;br /&gt;
### [https://hal.inria.fr/hal-01225202 Paper]&lt;br /&gt;
### [https://gforge.inria.fr/frs/?group_id=5833 Code]&lt;br /&gt;
### Benchmark: [https://crtc.cs.odu.edu/Internal:4D_Predicates_Benchmark PCK vs CGAL Predicates Benchmark]&lt;br /&gt;
### Note: see Geogram branch&lt;br /&gt;
## Adaptive Precision Floating-Point Arithmetic and Fast Robust Predicates for Computational Geometry:&lt;br /&gt;
### [https://www.cs.cmu.edu/afs/cs/project/quake/public/papers/robust-predicates.ps Paper]&lt;br /&gt;
### [https://www.cs.cmu.edu/afs/cs/project/quake/public/code/predicates.c Code]&lt;br /&gt;
# Smoothing (TODO)&lt;br /&gt;
## [https://hal.inria.fr/inria-00413248/document Feature preserving Delaunay mesh generation from 3D multi-material images]&lt;br /&gt;
## CGAL Sources: &lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html&lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3protectionimage3D&lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3HybridDomainExample&lt;br /&gt;
## PODM3D citations:&lt;br /&gt;
### [https://www-sciencedirect-com.proxy.lib.odu.edu/science/article/pii/S0021999101968160 Volume conserving smoothing for piecewise linear curves, surfaces, and triple lines]&lt;br /&gt;
### [https://www-sciencedirect-com.proxy.lib.odu.edu/science/article/pii/S0021999108004981 An anisotropic scale-invariant unstructured mesh generator suitable for volumetric imaging data]&lt;br /&gt;
### [https://pubmed.ncbi.nlm.nih.gov/20161102/ Variational generation of prismatic boundary-layer meshes for biomedical computing, International Journal for Numerical Methods]&lt;br /&gt;
## Prof, Andrey Suggestions:&lt;br /&gt;
### [https://people.eecs.berkeley.edu/~jrs/papers/stuffing.pdf Isosurface Stuffing: Fast Tetrahedral Meshes with Good Dihedral Angles]&lt;br /&gt;
### [https://imr.sandia.gov/_assets/documents/2019_IMR_Papers/3B.2-Chernikov.pdf CERTIFIED FUNCTIONS FOR MESH GENERATION]&lt;br /&gt;
### [https://crtc.cs.odu.edu/pub/papers/journal_49.pdf GENERALIZED INSERTION REGION GUIDES FOR DELAUNAY MESH REFINEMENT]&lt;br /&gt;
# Μultiple δ (TODO)&lt;br /&gt;
## Implement multiple δ (TODO)&lt;br /&gt;
## Use different δ values (possibly uniform based) according to the surface of each label of a segmented image (TODO)&lt;br /&gt;
# Produce the Voronoi Mesh out of the Delaunay (TODO)&lt;br /&gt;
## Check what TetGen does (TODO)&lt;br /&gt;
## Research conversion methods (TODO)&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:PODM_3D&amp;diff=8476</id>
		<title>Internal:PODM 3D</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:PODM_3D&amp;diff=8476"/>
		<updated>2021-06-02T20:06:14Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Documentation=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Read [https://crtc.cs.odu.edu/pub/papers/journal_56.pdf PODM3D] paper✔&lt;br /&gt;
# Read [https://crtc.cs.odu.edu/pub/papers/journal_58.pdf Guaranteed Quality Tetrahedral Delaunay Meshing for Medical Images] paper (Sect. 9) (TODO)&lt;br /&gt;
# Write a proper README.md file✔&lt;br /&gt;
# Add the [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] into the Appendix of the November Report✔&lt;br /&gt;
# Create [https://crtc.cs.odu.edu/Internal:CNF_Adaptivity CNF Adaptivity] Report&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create a [https://crtc.cs.odu.edu/CRTC_I2M User Manual] for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔&lt;br /&gt;
&lt;br /&gt;
=Execution Examples=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create meshes for the Medical Image Computing part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/Medical_Imaging_Example_Meshes Medical Imaging Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Create meshes for the Bioinformatics part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/Bioinformatics_Example_Meshes Bioinformatics Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Restructure repository of PODM3D based on Software engineering standards✔&lt;br /&gt;
# Decouple Args from PODM✔&lt;br /&gt;
# Create setArguments function✔&lt;br /&gt;
# Create setInputImage(ImageType::Pointer)✔&lt;br /&gt;
# Remove IOs from PODM✔&lt;br /&gt;
# Implement a sizing function that will work as an extra rule and it will use the points of the tetrahedron that is tested✔&lt;br /&gt;
## Create UML diagrams to understand the code and the Meshing Procedure in general✔&lt;br /&gt;
## Create a list of functions that need to be modified to implement the extra Rule ✔&lt;br /&gt;
## Modify the created list ([https://docs.google.com/spreadsheets/d/13M6qLRtS3wMH5B8vXwcqA-gP2b9p8QGwbhrn68VXoj0/edit#gid=0 Extra Rule sizing Function list]) of functions✔&lt;br /&gt;
## Create the following test sizing function to understand if modifications have been done correctly✔ &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
bool checkSizingFunction(double coordinatesOfTetrahedron**)&lt;br /&gt;
{&lt;br /&gt;
    double volume = volume(coordinatesOfTetrahedron);&lt;br /&gt;
    double* baryCenter = baryCenter(coordinatesOfTetrahedron)&lt;br /&gt;
    &lt;br /&gt;
    // if x axis &amp;lt;= 55 and volume of tetrahedron &amp;gt; 10&lt;br /&gt;
    if (baryCenter[0] &amp;lt;= 55 &amp;amp;&amp;amp; volume &amp;gt; 10)&lt;br /&gt;
       return true;&lt;br /&gt;
    else&lt;br /&gt;
       return false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
## Create the infrastructure to support Sizing Function pointer✔&lt;br /&gt;
## Incorporate Function Pointer to PODM by creating a setSizingFunction()✔&lt;br /&gt;
## Replace the test sizing function with the Adaptivity function that was created by Christos (The algorithm is described [https://crtc.cs.odu.edu/Internal:CNF_Adaptivity here])✔&lt;br /&gt;
### Understand that the current implementation supports negative weights✔&lt;br /&gt;
### Change the current implementation to use the minimum-maximum edge length of the element instead of its volume✔&lt;br /&gt;
### Identify an issue of checking sample points outside the image and solve it according to Christos&#039;s suggestions✔&lt;br /&gt;
# Separate the interface, the IOs and the filters from PODM✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create a general PODM driver✔&lt;br /&gt;
# Set a warning if delta &amp;gt; min-spacing * min-dimension-size / 5✔&lt;br /&gt;
# Set a default delta: ✔&lt;br /&gt;
## if sizing-function is off then default delta = min-spacing * min-dimension-size / 100 ✔&lt;br /&gt;
## if sizing-function is on then default delta = min-spacing * min-dimension-size / 20 ✔&lt;br /&gt;
# Remove labels array if there is only 1 label of interest ✔&lt;br /&gt;
# Print a warning if a label is not recovered✔&lt;br /&gt;
# Add Numa flag in CmakeLists.txt ✔&lt;br /&gt;
# Add binary file support ✔&lt;br /&gt;
# Improve Text output ✔&lt;br /&gt;
# Create label-filter for images ✔&lt;br /&gt;
## Preserve a set of labels of an image ✔&lt;br /&gt;
## Exclude a set of labels of an image ✔&lt;br /&gt;
# Remove redundant volume threshold checks that don&#039;t contribute anything to the meshing procedure ✔&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Libraries:&lt;br /&gt;
## Update ITK to v5.1.0 ✔&lt;br /&gt;
## Update VTK to v9.0.1 ✔&lt;br /&gt;
## Remove Boost from PODM (preserve it only for CGAL) ✔&lt;br /&gt;
# Save the label of a cell after its creation and Remove the expensive label recalculation in GetCleanMesh/GetCleanMeshParallel✔&lt;br /&gt;
# Compute Mesh Results in Parallel (TODO)&lt;br /&gt;
## Implement Parallel version of GetCleanMesh function ✔&lt;br /&gt;
## Testing ✔&lt;br /&gt;
## Speed-Up [[File:mesh-results-speed-up.png|500px|File:mesh-results-speed-up.png]] ✔&lt;br /&gt;
## Assigned as default ✔&lt;br /&gt;
# Upgrade the define NO_IO_WRITING&lt;br /&gt;
## Rename it to IO_WRITING ✔&lt;br /&gt;
## Create functions for loading and writing of auxiliary files ✔&lt;br /&gt;
## Create a compile flag for it, which will also enable the creation of the auxiliary files folder ✔&lt;br /&gt;
## Fix truncation error when loading box ✔&lt;br /&gt;
# Compute Box, Resized image and surface in Parallel ✔&lt;br /&gt;
## Implement Parallel version of ComputeBoxAndSurface function ✔&lt;br /&gt;
## Testing ✔&lt;br /&gt;
## Speed-Up [[File:box-surface-speed-up.png|500px|File:box-surface-speed-up.png]]✔&lt;br /&gt;
## Assigned as default ✔&lt;br /&gt;
# Sizing function:&lt;br /&gt;
## Control min edge and max edge using a percentage of the diagonal ✔&lt;br /&gt;
## Find values of samples points using linear interpolation ✔&lt;br /&gt;
&lt;br /&gt;
==Fall 2020==&lt;br /&gt;
# Fix shift of origin if delta not multiple of the spacing ✔&lt;br /&gt;
# Handle CNF images with spacing different than 1, and origin different than {0, 0, 0} ✔&lt;br /&gt;
## Upgrade Image Segmentation ✔&lt;br /&gt;
## Upgrade Sizing function ✔&lt;br /&gt;
## Upgrade Linear Interpolation ✔&lt;br /&gt;
# Change ImageSegmentation to create an image inside the requested grid domain ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
# [Christos] Addition of Extra points at the beginning of meshing ✔&lt;br /&gt;
# [Polykarpos] Loading and saving the state of PODM mesher ✔&lt;br /&gt;
# Load Dynamically Sizing Functions and their initialization as a shared Library using function pointers ✔&lt;br /&gt;
# Detect special cases of Christos and Polykarpos additions ✔&lt;br /&gt;
# Accept double instead of float type precision images ✔&lt;br /&gt;
# Add a vector of weights for each vertex ✔&lt;br /&gt;
# Add a vector of sizing functions for each thread ✔&lt;br /&gt;
# Integrate PODM3D of APBNRR with the latest PODM3D (TODO)&lt;br /&gt;
# Fix PODM not working on Wahab (TODO)&lt;br /&gt;
# Remeshing by using a mesh instead of an image as input and background mesh (TODO)&lt;br /&gt;
# Create upscale-image-filter (TODO)&lt;br /&gt;
# Replace CGAL Predicates with: (TODO)&lt;br /&gt;
## Predicates Construction Kit:&lt;br /&gt;
### [https://hal.inria.fr/hal-01225202 Paper]&lt;br /&gt;
### [https://gforge.inria.fr/frs/?group_id=5833 Code]&lt;br /&gt;
### Benchmark: [https://crtc.cs.odu.edu/Internal:4D_Predicates_Benchmark PCK vs CGAL Predicates Benchmark]&lt;br /&gt;
### Note: see Geogram branch&lt;br /&gt;
## Adaptive Precision Floating-Point Arithmetic and Fast Robust Predicates for Computational Geometry:&lt;br /&gt;
### [https://www.cs.cmu.edu/afs/cs/project/quake/public/papers/robust-predicates.ps Paper]&lt;br /&gt;
### [https://www.cs.cmu.edu/afs/cs/project/quake/public/code/predicates.c Code]&lt;br /&gt;
# Smoothing (TODO)&lt;br /&gt;
## [https://hal.inria.fr/inria-00413248/document Feature preserving Delaunay mesh generation from 3D multi-material images]&lt;br /&gt;
## CGAL Sources: &lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html&lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3protectionimage3D&lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3HybridDomainExample&lt;br /&gt;
## PODM3D citations:&lt;br /&gt;
### [https://www-sciencedirect-com.proxy.lib.odu.edu/science/article/pii/S0021999101968160 Volume conserving smoothing for piecewise linear curves, surfaces, and triple lines]&lt;br /&gt;
### [https://www-sciencedirect-com.proxy.lib.odu.edu/science/article/pii/S0021999108004981 An anisotropic scale-invariant unstructured mesh generator suitable for volumetric imaging data]&lt;br /&gt;
### [https://pubmed.ncbi.nlm.nih.gov/20161102/ Variational generation of prismatic boundary-layer meshes for biomedical computing, International Journal for Numerical Methods]&lt;br /&gt;
## Prof, Andrey Suggestions:&lt;br /&gt;
### [https://people.eecs.berkeley.edu/~jrs/papers/stuffing.pdf Isosurface Stuffing: Fast Tetrahedral Meshes with Good Dihedral Angles]&lt;br /&gt;
### [https://imr.sandia.gov/_assets/documents/2019_IMR_Papers/3B.2-Chernikov.pdf CERTIFIED FUNCTIONS FOR MESH GENERATION]&lt;br /&gt;
### [https://crtc.cs.odu.edu/pub/papers/journal_49.pdf GENERALIZED INSERTION REGION GUIDES FOR DELAUNAY MESH REFINEMENT]&lt;br /&gt;
# Μultiple δ (TODO)&lt;br /&gt;
## Implement multiple δ (TODO)&lt;br /&gt;
## Use different δ values (possibly uniform based) according to the surface of each label of a segmented image (TODO)&lt;br /&gt;
# Produce the Voronoi Mesh out of the Delaunay (TODO)&lt;br /&gt;
## Check what TetGen does (TODO)&lt;br /&gt;
## Research conversion methods (TODO)&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:PartonsToNRRD&amp;diff=8475</id>
		<title>CNF:PartonsToNRRD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:PartonsToNRRD&amp;diff=8475"/>
		<updated>2021-06-02T20:05:27Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/partonstonrrd/ Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/PartonsToNRRD/ Github]&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Create tool to generate NRRD images using partons data ✔&lt;br /&gt;
&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Enable the creation of images using specific spacing ✔&lt;br /&gt;
&lt;br /&gt;
== Spring 2021 ==&lt;br /&gt;
# Create double instead of float type images ✔&lt;br /&gt;
# Create 4D image&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:PODM_3D&amp;diff=8474</id>
		<title>Internal:PODM 3D</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:PODM_3D&amp;diff=8474"/>
		<updated>2021-06-02T15:57:58Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Documentation=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Read [https://crtc.cs.odu.edu/pub/papers/journal_56.pdf PODM3D] paper✔&lt;br /&gt;
# Read [https://crtc.cs.odu.edu/pub/papers/journal_58.pdf Guaranteed Quality Tetrahedral Delaunay Meshing for Medical Images] paper (Sect. 9) (TODO)&lt;br /&gt;
# Write a proper README.md file✔&lt;br /&gt;
# Add the [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] into the Appendix of the November Report✔&lt;br /&gt;
# Create [https://crtc.cs.odu.edu/Internal:CNF_Adaptivity CNF Adaptivity] Report&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create a [https://crtc.cs.odu.edu/CRTC_I2M User Manual] for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔&lt;br /&gt;
&lt;br /&gt;
=Execution Examples=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create meshes for the Medical Image Computing part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/Medical_Imaging_Example_Meshes Medical Imaging Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Create meshes for the Bioinformatics part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/Bioinformatics_Example_Meshes Bioinformatics Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Restructure repository of PODM3D based on Software engineering standards✔&lt;br /&gt;
# Decouple Args from PODM✔&lt;br /&gt;
# Create setArguments function✔&lt;br /&gt;
# Create setInputImage(ImageType::Pointer)✔&lt;br /&gt;
# Remove IOs from PODM✔&lt;br /&gt;
# Implement a sizing function that will work as an extra rule and it will use the points of the tetrahedron that is tested✔&lt;br /&gt;
## Create UML diagrams to understand the code and the Meshing Procedure in general✔&lt;br /&gt;
## Create a list of functions that need to be modified to implement the extra Rule ✔&lt;br /&gt;
## Modify the created list ([https://docs.google.com/spreadsheets/d/13M6qLRtS3wMH5B8vXwcqA-gP2b9p8QGwbhrn68VXoj0/edit#gid=0 Extra Rule sizing Function list]) of functions✔&lt;br /&gt;
## Create the following test sizing function to understand if modifications have been done correctly✔ &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
bool checkSizingFunction(double coordinatesOfTetrahedron**)&lt;br /&gt;
{&lt;br /&gt;
    double volume = volume(coordinatesOfTetrahedron);&lt;br /&gt;
    double* baryCenter = baryCenter(coordinatesOfTetrahedron)&lt;br /&gt;
    &lt;br /&gt;
    // if x axis &amp;lt;= 55 and volume of tetrahedron &amp;gt; 10&lt;br /&gt;
    if (baryCenter[0] &amp;lt;= 55 &amp;amp;&amp;amp; volume &amp;gt; 10)&lt;br /&gt;
       return true;&lt;br /&gt;
    else&lt;br /&gt;
       return false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
## Create the infrastructure to support Sizing Function pointer✔&lt;br /&gt;
## Incorporate Function Pointer to PODM by creating a setSizingFunction()✔&lt;br /&gt;
## Replace the test sizing function with the Adaptivity function that was created by Christos (The algorithm is described [https://crtc.cs.odu.edu/Internal:CNF_Adaptivity here])✔&lt;br /&gt;
### Understand that the current implementation supports negative weights✔&lt;br /&gt;
### Change the current implementation to use the minimum-maximum edge length of the element instead of its volume✔&lt;br /&gt;
### Identify an issue of checking sample points outside the image and solve it according to Christos&#039;s suggestions✔&lt;br /&gt;
# Separate the interface, the IOs and the filters from PODM✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create a general PODM driver✔&lt;br /&gt;
# Set a warning if delta &amp;gt; min-spacing * min-dimension-size / 5✔&lt;br /&gt;
# Set a default delta: ✔&lt;br /&gt;
## if sizing-function is off then default delta = min-spacing * min-dimension-size / 100 ✔&lt;br /&gt;
## if sizing-function is on then default delta = min-spacing * min-dimension-size / 20 ✔&lt;br /&gt;
# Remove labels array if there is only 1 label of interest ✔&lt;br /&gt;
# Print a warning if a label is not recovered✔&lt;br /&gt;
# Add Numa flag in CmakeLists.txt ✔&lt;br /&gt;
# Add binary file support ✔&lt;br /&gt;
# Improve Text output ✔&lt;br /&gt;
# Create label-filter for images ✔&lt;br /&gt;
## Preserve a set of labels of an image ✔&lt;br /&gt;
## Exclude a set of labels of an image ✔&lt;br /&gt;
# Remove redundant volume threshold checks that don&#039;t contribute anything to the meshing procedure ✔&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Libraries:&lt;br /&gt;
## Update ITK to v5.1.0 ✔&lt;br /&gt;
## Update VTK to v9.0.1 ✔&lt;br /&gt;
## Remove Boost from PODM (preserve it only for CGAL) ✔&lt;br /&gt;
# Save the label of a cell after its creation and Remove the expensive label recalculation in GetCleanMesh/GetCleanMeshParallel✔&lt;br /&gt;
# Compute Mesh Results in Parallel (TODO)&lt;br /&gt;
## Implement Parallel version of GetCleanMesh function ✔&lt;br /&gt;
## Testing ✔&lt;br /&gt;
## Speed-Up [[File:mesh-results-speed-up.png|500px|File:mesh-results-speed-up.png]] ✔&lt;br /&gt;
## Assigned as default ✔&lt;br /&gt;
# Upgrade the define NO_IO_WRITING&lt;br /&gt;
## Rename it to IO_WRITING ✔&lt;br /&gt;
## Create functions for loading and writing of auxiliary files ✔&lt;br /&gt;
## Create a compile flag for it, which will also enable the creation of the auxiliary files folder ✔&lt;br /&gt;
## Fix truncation error when loading box ✔&lt;br /&gt;
# Compute Box, Resized image and surface in Parallel ✔&lt;br /&gt;
## Implement Parallel version of ComputeBoxAndSurface function ✔&lt;br /&gt;
## Testing ✔&lt;br /&gt;
## Speed-Up [[File:box-surface-speed-up.png|500px|File:box-surface-speed-up.png]]✔&lt;br /&gt;
## Assigned as default ✔&lt;br /&gt;
# Sizing function:&lt;br /&gt;
## Control min edge and max edge using a percentage of the diagonal ✔&lt;br /&gt;
## Find values of samples points using linear interpolation ✔&lt;br /&gt;
&lt;br /&gt;
==Fall 2020==&lt;br /&gt;
# Fix shift of origin if delta not multiple of the spacing ✔&lt;br /&gt;
# Handle CNF images with spacing different than 1, and origin different than {0, 0, 0} ✔&lt;br /&gt;
## Upgrade Image Segmentation ✔&lt;br /&gt;
## Upgrade Sizing function ✔&lt;br /&gt;
## Upgrade Linear Interpolation ✔&lt;br /&gt;
# Change ImageSegmentation to create an image inside the requested grid domain ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
# [Christos] Addition of Extra points at the beginning of meshing ✔&lt;br /&gt;
# [Polykarpos] Loading and saving the state of PODM mesher ✔&lt;br /&gt;
# Load Dynamically Sizing Functions and their initialization as a shared Library using function pointers ✔&lt;br /&gt;
# Detect special cases of Christos and Polykarpos additions ✔&lt;br /&gt;
# Accept double instead of float type precision images ✔&lt;br /&gt;
# Add a vector of weights for each vertex ✔&lt;br /&gt;
# Integrate PODM3D of APBNRR with the latest PODM3D (TODO)&lt;br /&gt;
# Fix PODM not working on Wahab (TODO)&lt;br /&gt;
# Remeshing by using a mesh instead of an image as input and background mesh (TODO)&lt;br /&gt;
# Create upscale-image-filter (TODO)&lt;br /&gt;
# Replace CGAL Predicates with: (TODO)&lt;br /&gt;
## Predicates Construction Kit:&lt;br /&gt;
### [https://hal.inria.fr/hal-01225202 Paper]&lt;br /&gt;
### [https://gforge.inria.fr/frs/?group_id=5833 Code]&lt;br /&gt;
### Benchmark: [https://crtc.cs.odu.edu/Internal:4D_Predicates_Benchmark PCK vs CGAL Predicates Benchmark]&lt;br /&gt;
### Note: see Geogram branch&lt;br /&gt;
## Adaptive Precision Floating-Point Arithmetic and Fast Robust Predicates for Computational Geometry:&lt;br /&gt;
### [https://www.cs.cmu.edu/afs/cs/project/quake/public/papers/robust-predicates.ps Paper]&lt;br /&gt;
### [https://www.cs.cmu.edu/afs/cs/project/quake/public/code/predicates.c Code]&lt;br /&gt;
# Smoothing (TODO)&lt;br /&gt;
## [https://hal.inria.fr/inria-00413248/document Feature preserving Delaunay mesh generation from 3D multi-material images]&lt;br /&gt;
## CGAL Sources: &lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html&lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3protectionimage3D&lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3HybridDomainExample&lt;br /&gt;
## PODM3D citations:&lt;br /&gt;
### [https://www-sciencedirect-com.proxy.lib.odu.edu/science/article/pii/S0021999101968160 Volume conserving smoothing for piecewise linear curves, surfaces, and triple lines]&lt;br /&gt;
### [https://www-sciencedirect-com.proxy.lib.odu.edu/science/article/pii/S0021999108004981 An anisotropic scale-invariant unstructured mesh generator suitable for volumetric imaging data]&lt;br /&gt;
### [https://pubmed.ncbi.nlm.nih.gov/20161102/ Variational generation of prismatic boundary-layer meshes for biomedical computing, International Journal for Numerical Methods]&lt;br /&gt;
## Prof, Andrey Suggestions:&lt;br /&gt;
### [https://people.eecs.berkeley.edu/~jrs/papers/stuffing.pdf Isosurface Stuffing: Fast Tetrahedral Meshes with Good Dihedral Angles]&lt;br /&gt;
### [https://imr.sandia.gov/_assets/documents/2019_IMR_Papers/3B.2-Chernikov.pdf CERTIFIED FUNCTIONS FOR MESH GENERATION]&lt;br /&gt;
### [https://crtc.cs.odu.edu/pub/papers/journal_49.pdf GENERALIZED INSERTION REGION GUIDES FOR DELAUNAY MESH REFINEMENT]&lt;br /&gt;
# Μultiple δ (TODO)&lt;br /&gt;
## Implement multiple δ (TODO)&lt;br /&gt;
## Use different δ values (possibly uniform based) according to the surface of each label of a segmented image (TODO)&lt;br /&gt;
# Produce the Voronoi Mesh out of the Delaunay (TODO)&lt;br /&gt;
## Check what TetGen does (TODO)&lt;br /&gt;
## Research conversion methods (TODO)&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8473</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8473"/>
		<updated>2021-05-27T19:44:19Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Minimizes the amount of partons calculations needed to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of CNF models&lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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. &lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
# 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:&lt;br /&gt;
## (Optional) Gagik&#039;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&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Predefined number of partons calculations&lt;br /&gt;
#### Small mesh size&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### No interpolation error guarantee&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a dense enough uniform mesh in order to satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### You don&#039;t know how big your mesh should be&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh in an iterative fashion by adding random points to the mesh till you satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh using the linear interpolation error as the sizing function&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Everything that was mentioned&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Maybe caching issues, but they are possibly insignificant since PODM is already really fast.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
## [https://www.hpl.hp.com/techreports/2002/HPL-2002-320.pdf n-Simplex Interpolation]&lt;br /&gt;
## [https://www.techscience.com/CMES/v94n4/26992/pdf Quadratic Interpolation with Tetrahedra for 3D Scalar Fields]&lt;br /&gt;
## [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]&lt;br /&gt;
## [https://arxiv.org/pdf/physics/0203033.pdf Foam: A General-Purpose Cellular Monte Carlo Event Generator]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8472</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8472"/>
		<updated>2021-05-21T22:59:21Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Minimizes the amount of partons calculations needed to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of CNF models&lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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. &lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
# 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:&lt;br /&gt;
## (Optional) Gagik&#039;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&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Predefined number of partons calculations&lt;br /&gt;
#### Small mesh size&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### No interpolation error guarantee&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a dense enough uniform mesh in order to satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### You don&#039;t know how big your mesh should be&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh in an iterative fashion by adding random points to the mesh till you satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh using the linear interpolation error as the sizing function&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Everything that was mentioned&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Maybe caching issues, but they are possibly insignificant since PODM is already really fast.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
## [https://www.hpl.hp.com/techreports/2002/HPL-2002-320.pdf n-Simplex Interpolation]&lt;br /&gt;
## [https://www.techscience.com/CMES/v94n4/26992/pdf Quadratic Interpolation with Tetrahedra for 3D Scalar Fields]&lt;br /&gt;
## [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]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8471</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8471"/>
		<updated>2021-05-21T15:58:11Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Minimizes the amount of partons calculations needed to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of CNF models&lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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. &lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
# 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:&lt;br /&gt;
## (Optional) Gagik&#039;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&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Predefined number of partons calculations&lt;br /&gt;
#### Small mesh size&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### No interpolation error guarantee&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a dense enough uniform mesh in order to satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### You don&#039;t know how big your mesh should be&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh in an iterative fashion by adding random points to the mesh till you satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh using the linear interpolation error as the sizing function&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Everything that was mentioned&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Maybe caching issues, but they are possibly insignificant since PODM is already really fast.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
## [https://www.hpl.hp.com/techreports/2002/HPL-2002-320.pdf n-Simplex Interpolation]&lt;br /&gt;
## [https://www.techscience.com/CMES/v94n4/26992/pdf Quadratic Interpolation with Tetrahedra for 3D Scalar Fields]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8470</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8470"/>
		<updated>2021-05-21T02:19:42Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Minimizes the amount of partons calculations needed to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of CNF models&lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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. &lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
# 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:&lt;br /&gt;
## (Optional) Gagik&#039;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&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Predefined number of partons calculations&lt;br /&gt;
#### Small mesh size&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### No interpolation error guarantee&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a dense enough uniform mesh in order to satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### You don&#039;t know how big your mesh should be&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh in an iterative fashion by adding random points to the mesh till you satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh using the linear interpolation error as the sizing function&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Everything that was mentioned&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Maybe caching issues, but they are possibly insignificant since PODM is already really fast.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
## [https://www.hpl.hp.com/techreports/2002/HPL-2002-320.pdf n-Simplex Interpolation]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8466</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8466"/>
		<updated>2021-04-28T21:42:36Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Week April 26 - May 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Minimizes the amount of partons calculations needed to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of CNF models&lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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. &lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
# 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:&lt;br /&gt;
## (Optional) Gagik&#039;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&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Predefined number of partons calculations&lt;br /&gt;
#### Small mesh size&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### No interpolation error guarantee&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a dense enough uniform mesh in order to satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### You don&#039;t know how big your mesh should be&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh in an iterative fashion by adding random points to the mesh till you satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh using the linear interpolation error as the sizing function&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Everything that was mentioned&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Maybe caching issues, but they are possibly insignificant since PODM is already really fast.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8465</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8465"/>
		<updated>2021-04-28T21:32:13Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Week April 26 - May 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Performs exactly the amount of partons calculations (NO MORE) to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of CNF models&lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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. &lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
# 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:&lt;br /&gt;
## (Optional) Gagik&#039;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&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Predefined number of partons calculations&lt;br /&gt;
#### Small mesh size&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### No interpolation error guarantee&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a dense enough uniform mesh in order to satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### You don&#039;t know how big your mesh should be&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh in an iterative fashion by adding random points to the mesh till you satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh using the linear interpolation error as the sizing function&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Everything that was originally mentioned&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Maybe caching issues&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8464</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8464"/>
		<updated>2021-04-28T21:27:43Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Week April 26 - May 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Performs exactly the amount of partons calculations (NO MORE) to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of CNF models&lt;br /&gt;
### By splitting a cell if a CFF requires that 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. &lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
# 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:&lt;br /&gt;
## (Optional) Gagik&#039;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&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Predefined number of partons calculations&lt;br /&gt;
#### Small mesh size&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### No interpolation error guarantee&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a dense enough uniform mesh in order to satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### You don&#039;t know how big your mesh should be&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh in an iterative fashion by adding random points to the mesh till you satisfy the desired interpolation accuracy&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Achieves the required interpolation accuracy&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Big mesh size&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### Only for one CFF&lt;br /&gt;
## Create a mesh using the linear interpolation error as the sizing function&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Everything that was originally mentioned&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Maybe caching issues&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8463</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8463"/>
		<updated>2021-04-28T21:21:47Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Week April 26 - May 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Performs exactly the amount of partons calculations (NO MORE) to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of CNF models&lt;br /&gt;
### By splitting a cell if a CFF requires that 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. &lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
# The steps that we will describe in the paper that we tried to achieve the desired result (sufficient interpolation error throughout every cell of a cell, with the minimum partons calculations) are:&lt;br /&gt;
## Gagik&#039;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&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Predefined number of partons calculations&lt;br /&gt;
#### Small mesh size&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### No interpolation error guarantee&lt;br /&gt;
## Create a dense enough&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8462</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8462"/>
		<updated>2021-04-28T21:21:20Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Week April 26 - May 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Performs exactly the amount of partons calculations (NO MORE) to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of CNF models&lt;br /&gt;
### By splitting a cell if a CFF requires that 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. &lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
# The steps that we will describe in the paper that we tried to achieve the desired result (sufficient interpolation error throughout every cell of a cell) are:&lt;br /&gt;
## Gagik&#039;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&lt;br /&gt;
### Pros:&lt;br /&gt;
#### Predefined number of partons calculations&lt;br /&gt;
#### Small mesh size&lt;br /&gt;
### Cons:&lt;br /&gt;
#### Many Partons calculations&lt;br /&gt;
#### No interpolation error guarantee&lt;br /&gt;
## Create a dense enough&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8461</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8461"/>
		<updated>2021-04-28T21:15:13Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Week April 26 - May 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Performs exactly the amount of partons calculations (NO MORE) to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of CNF models&lt;br /&gt;
### By splitting a cell if a CFF requires that 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. &lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8460</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8460"/>
		<updated>2021-04-28T21:14:55Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Week April 26 - May 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Performs exactly the amount of partons calculations (NO MORE) to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Simpler model storage for the future database of every CFF&lt;br /&gt;
### By splitting a cell if a CFF requires that 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. &lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8459</id>
		<title>CNF:CNF</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF&amp;diff=8459"/>
		<updated>2021-04-28T21:09:48Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Week March 8 - 14 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A detailed list of results for CNF cases received from JLAB are presented here:&lt;br /&gt;
[https://crtc.cs.odu.edu/CNF:Example_Meshes Example Meshes]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF19-04 Project =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* (O1) Implement an n-dimensional mesh-based representation of phase space data using tessellation methods and test it in low-dimensional scenarios (n=3) &lt;br /&gt;
* (O2) Explore potential physics model comparisons enabled by the new technologies&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
[[File: distributionquarks.png|thumb|right|350px| &#039;&#039;&#039;Distribution of the probability of quarks&#039; existence based on the change in momentum&#039;&#039;&#039;]]&lt;br /&gt;
# Post-processing of the output of the PARTONS GPD physics model for generation of NRDD/DICOM images and their segmentation (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Generation of n-dimensional sequence of tessellations for numerical integration (by July 1); -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  &lt;br /&gt;
## software delivered to JLAB, May 2019:  [https://crtc.cs.odu.edu/CRTC_I2M CRTC Image to Mesh Conversion Software Suite].&lt;br /&gt;
## software developed at JLAB to transform physics observable grids generated by the PARTONS framework to the data format used by ODU provided software.&lt;br /&gt;
# 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. -- [&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## explore the option of generating graded meshes (by September).&lt;br /&gt;
# 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 &amp;lt; n (by Sept. 30);  -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [http://www.cs.odu.edu/crtc/videos/paraview.html Imaging Demo using Paraview]&lt;br /&gt;
## [https://kitware.github.io/paraview-glance/doc/ Paraview Glance]&lt;br /&gt;
# Topical workshop including experts in imaging, exascale computing, uncertainty quantification, and nuclear physics to guide further developments (by Sept. 30). -- [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Invited visitors and agenda is completed. &lt;br /&gt;
## The [https://cepm.cs.odu.edu/CNF_Imaging_Workshop CNF Imaging Workshop] took place on August 19th and 20th at JLab.&lt;br /&gt;
# [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF mesh examples]&lt;br /&gt;
&lt;br /&gt;
= SURA CNF20-001 Project =&lt;br /&gt;
== Objectives==&lt;br /&gt;
(O1) Demonstrate that 3-dimensional tessellations can improve the speed of basic nuclear femtography operations like Monte Carlo computations using a Nuclear Physics example&lt;br /&gt;
&lt;br /&gt;
(O2) Extend the isotropic tessellations 4 dimensions Images (eg. 4D NRRD images)&lt;br /&gt;
&lt;br /&gt;
(O3) Explore gradation in 4D tessellations using a given metric or sizing function&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (3 months)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;August 15&#039;&#039;&#039;&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** 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.&lt;br /&gt;
** Co-organize with Dr. Hyde as a chair a virtual workshop around mid-June on &amp;quot;The Integration of Imaging and Visualization in Femtography&amp;quot; (Hyde, Liuiti, Heddle, Chrisochoides)&lt;br /&gt;
* 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);&lt;br /&gt;
* 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);&lt;br /&gt;
&#039;&#039;&#039;September 30, 2020:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Integration with FEMT-006-03 (PI Dr. Heddle) and FEMT-006-05 (Dr. Liuiti):&lt;br /&gt;
** Tesselation of Compton Form Factors using PARTONS and UVA GPD generators (Hyde, Liuiti, Chrisochoides)&lt;br /&gt;
* create 4D triangulation algorithm and code as a prelude to future physics implementations (Chrisochodes/CS Gard. Student);&lt;br /&gt;
* 3D-visualization plugins in ParaView of the flavor-dependent Compton form factors (Hyde/Chrisochoides/Physics and CS Gard. Students);&lt;br /&gt;
* “smart 3-dimensional lookup table” based on an &#039;&#039;&#039;adaptive or graded&#039;&#039;&#039; mesh-based tessellated representation of the CFFs for efficient evaluation of Monte Carlo simulations (Gavalian/Hyde/Physics Grad. Student);&lt;br /&gt;
&lt;br /&gt;
== Smart look-up tables ==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== Timetable for paper on &amp;quot;smart lookup table&amp;quot; for fast MC simulations ===&lt;br /&gt;
# Define Region of Interest (RoI) &lt;br /&gt;
## Use NRRD image (done with CNF19-004): might be inefficient, but the definition of RoI is outside  the scope of the paper&lt;br /&gt;
## 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.&lt;br /&gt;
## 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.&lt;br /&gt;
### need to define a metric (Charles/Mitch): preliminary ideas by mid-August and finalize metric by end of August&lt;br /&gt;
# Implement smart lookup table using tessellation generated from (1)&lt;br /&gt;
## reproduce Gagik&#039;s results&lt;br /&gt;
### Mitch: understand the code and write a one-page description (Gagik to supervise the effort): mid of July, report progress in mid-report&lt;br /&gt;
### Mitch/Charles define (if there is a need) a new way that might involve UVA&#039;s data fitting method: a proposal by end of July.&lt;br /&gt;
#define an example problem pertinent to CNF/IEC where &amp;quot;smart lookup table for fast MC simulations&#039;&#039;&#039; are the dominant term in the execution time (Charles/Christian/Gagik)&lt;br /&gt;
## Putting Things Alltogether (end of August the latest first week of Sept.)&lt;br /&gt;
# Finish paper by end of September (All, Charles/Christian will define the skeleton and assign sections to CS and Physic subgroups)&lt;br /&gt;
&lt;br /&gt;
==Weekly Reports==&lt;br /&gt;
&lt;br /&gt;
=== Week May 17 - 22 ===&lt;br /&gt;
# (Michell/Spiros) Mitch needs to get the I2M Docker and become familiar with its usage [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (All) Talk about the wiki page we need to set up for our weekly reports [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week May 25 - 30 ===&lt;br /&gt;
# (Spiros) Smooth transition Michell to use CRTC I2M conversion [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Comfortable using CRTC&#039;s I2M conversion Docker, User Guided, read VTK tessellation file, etc.. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Identify 3D ParaView Plugins that we might need to display results [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles) Identify problem(s) to be addressed with the UVA and PARTON models [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Charles/Chistian/Gagik) Examples of  target Journals we want to consider for paper submission [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos) Slides from 05-22 [https://docs.google.com/presentation/d/1yz8dxVXO82rFCtD9KWjG1PBvvP5VikAxTz07qoM3IqU here] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 1 - 6 ===&lt;br /&gt;
# (Spiros) Add binary IO for output meshes. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Finish converting PARTONS output data into NRRD format for PODM. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Kevin) Practice utilizing and applying custom functions on data within Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## Examples: [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data Visualization page]&lt;br /&gt;
# (Charles) Why use NRRD format if it is optimal to calculate on non-uniform grid?&lt;br /&gt;
## (Spiros) because PODM currently supports images that are uniform grids. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 8 - 12 ===&lt;br /&gt;
# (Mitch/Charles) Compute PARTONS points at vertices of simplices, &lt;br /&gt;
## Question:  Does the tesselation software store the interpolated values at the vertices or the simplex barycentres?&lt;br /&gt;
### Vertices [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Construct difference of interpolation values at vertices with new computed PARTONS values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Nikos) Explore ways of producing the ith step of adaptive tessellation using  Mitch&#039;s  new values on the (i-1)th tessellation&lt;br /&gt;
## (Spiros) By creating Images out of the meshes using interpolation: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Weighted_Mesh_To_Image Weighted Mesh To Image Software]&lt;br /&gt;
# (Mitch/Kevin/Charles) Help display Mitch&#039;s 3D data using predefined labels, etc..&lt;br /&gt;
## Experiment with 2D image of CFF(xi,t) at fixed Q2 vs. 3D image of CFF(xi,t,Q2)&lt;br /&gt;
### Linear vs. log axis. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Axis labels:  convert (x,y,z), to (xi,t,CFF) or (xi,t,Q2) with color CFF scale [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/CNF:Visualization_for_CNF_data#Other_Options_in_Paraview Instructions Available Here]&lt;br /&gt;
## Change PARTONS mesh to equal steps in log(xi) and log(Q2) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik) Reproduce either Reimann or Lebesgue Integral calculations using [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for 2D [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 15 - 19 ===&lt;br /&gt;
# (Spiros) Develop a generic interpolation filter for Mitch and write a high-level description (including VTK/ITK kernels used) to assist for future modifications&lt;br /&gt;
## [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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fomulation of [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Compare [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation] with [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document] of Charles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) finish up the API for passing data image and vtk data to PARTON and close the loop&lt;br /&gt;
## (Spiros) Develop a function that reads and converts an image to a 3D lattice [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Develop a function that reads the points and their weights of a tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch) Close the loop [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Convert partons data to nrrd properly, so that they can be visualized with Paraview [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Gagik/Spiros) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] for “smart lookup table for MC kernel”, produce 3D results and refactor the code:&lt;br /&gt;
## (Mitch) Figure out the computational details of [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
## (Spiros) Refactor Gagik&#039;s code, use VTK library and add comments [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] &lt;br /&gt;
##  &#039;&#039;&#039;(Mitch/Gagik) Produce results using 3D tesselations [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
# (Charles) in parallel work on a method for &amp;quot;smart lookup table&amp;quot;&lt;br /&gt;
## [http://www.lions.odu.edu/~chyde/Research/TechnicalNotes/TessellationInterpolation.pdf Tessellation &amp;amp; Interpolation document]  [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;], corrections, update, expansion in progress&lt;br /&gt;
## Compare with [https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel] and either consolidate the two or end up with two different methods. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week June 22 - 26 ===&lt;br /&gt;
# (Christian) Summary of CNF projects for 2019/20, [https://docs.google.com/presentation/d/1YuvSjHGvkB0I36gIxla58GxR-H3NtPd01w7ZtARDvuU/edit?usp=sharing CNF Summary Slides] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]: &lt;br /&gt;
# (Charles/Gagik) Couple of Slides for use of adaptive tessellation in Monte Carlo and CFF approximation&lt;br /&gt;
# (Spiros) Creationg of a 4D Synthetic Image Generator &lt;br /&gt;
## HyperSphere (4D Sphere) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## HyperCube (4D Cube) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) Parallelize Partons&#039; code using OpenMP and submit jobs on Turing/Wahab. &lt;br /&gt;
## (Spiros) Help Mitch login and view files on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Explore potential to parallelize Partons&#039; code [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### It looks like requires more effort than our project could afford. It has to be moved as a task for next year. &lt;br /&gt;
## (Spiros) Explore potential to execute multiple jobs on Wahab [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If this is hard as the item above might need to move for next year. &lt;br /&gt;
# (Mitch) Create write-up explanation of Gagiks Monte Carlo code [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##(Mitch/Spiros) Generalize MC Gagik&#039;s 2D code to 3D and consider potential higher dimensions [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Re-run PARTONS at mesh points [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot difference of original mesh to re-evaluated mesh in Paraview:  Squared Difference [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Plot new values on original tessellation points&lt;br /&gt;
&lt;br /&gt;
=== Week June 29 - July 3 ===&lt;br /&gt;
# &#039;&#039;&#039;(O1)&#039;&#039;&#039; (Mitch/Gagik/Charles) Smart Lookup Table for Monte Carlo &lt;br /&gt;
## Compare Tessellation with either |f_a – f_b| metric or |f_a – f_b| / |f_a + f_b|&lt;br /&gt;
## First step is to redo PODM tessellation with same algorithm, but pass ln[Im[CFF]] instead of Im[CFF] to PODM&lt;br /&gt;
### In anticipation of 4D representations, calculate PARTONS values for full DVCS cross-section:&lt;br /&gt;
#### For discussion:  Which variables to keep fixed, which variables to display&lt;br /&gt;
# &#039;&#039;&#039;(O2)&#039;&#039;&#039; (Spiros/Nikos) 3D/4D Tesselation for Nuclear Femtography&lt;br /&gt;
##  Explore a new way to leverage 3D/4D I2M conversion and the new requirements for adaptivity relying on min I/O for PARTONS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### [https://crtc.cs.odu.edu/Internal:TetGen_CNF CNF Constained Mesher Prototype]&lt;br /&gt;
## (Christos/Spiros) Consider PDR worker initialization for initializing PODM and enabling remeshing or an existing mesh. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO: Year 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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. &lt;br /&gt;
### The same initialization method can be used here. Using this approach one can refine an existing mesh while keeping all previous vertex-based information. &lt;br /&gt;
### 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.&lt;br /&gt;
### As a further (future) step this approach can enable an &amp;quot;always in memory mesh&amp;quot; where the data are always in memory and being accessed by a common API from each component of the pipeline.&lt;br /&gt;
# &#039;&#039;&#039;(O3)&#039;&#039;&#039; (Spiros/Mitch/Charles) Visualization&lt;br /&gt;
##  (Spiros) Explore a visualization option for 4D tesselations by extracting a 3D &amp;quot;slice&amp;quot; and then use ParaView to display results [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Define what a 3D &amp;quot;slice&amp;quot; means in 4D space [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Charles) Generate PARTON 4D and a 3D &amp;quot;slice&amp;quot; for these data, for validation of viz. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;] &lt;br /&gt;
### 4D (unpolarized cross-sections) differential in log(Q2), log(xB), t, phi [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Mitch/Kevin) Explore color palette options for displaying positive and negative values simultaneously [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# &#039;&#039;&#039;(O4)&#039;&#039;&#039; Integration with UVA and CNU&lt;br /&gt;
## Think about an on-line meeting on Monte Carlo Simulations in Nuclear Femtography?&lt;br /&gt;
## What is the status with UVA, are there any changes due to lack of additional funding?&lt;br /&gt;
&lt;br /&gt;
=== Week July 6 - July 10 ===&lt;br /&gt;
# (Spiros / Mitch) Adaptivity Metrics&lt;br /&gt;
## Using local denominator&lt;br /&gt;
### max-min / mean (Not working)&lt;br /&gt;
### rms / mean (Not working)&lt;br /&gt;
### 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&lt;br /&gt;
## Using no denominator&lt;br /&gt;
### max-min: [https://crtc.cs.odu.edu/CNF:Mesh_Sizing_for_CNF_data#Method Original Method]&lt;br /&gt;
### Note: No denominators can work, but for each Image, the weight-limit needs to be tuned based on its weights.&lt;br /&gt;
## Using global denominator&lt;br /&gt;
### rms / globalMean (an idea which needs tweaking)&lt;br /&gt;
#### Note: not bounded&lt;br /&gt;
### rms / globalRms (Possibly working)&lt;br /&gt;
#### Note: not upper bounded [0, +oo)&lt;br /&gt;
### max-min / elementWeightRange&lt;br /&gt;
#### Note: bounded [0, 1]&lt;br /&gt;
### Note: Global denominators work, and the weight-limit is normalized based on the given image.&lt;br /&gt;
## [[CNF:Metric Figures | Metric Figures]]&lt;br /&gt;
## Useful Filter: [https://itk.org/Doxygen/html/classitk_1_1StatisticsImageFilter.html StatisticsImageFilter]&lt;br /&gt;
&lt;br /&gt;
=== Week July 13 - July 17 ===&lt;br /&gt;
# (Spiros/Mitch/Wirawan) Software Engineering Aspects for [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] &lt;br /&gt;
## (Spiros/Mitch) Maintenance and Clarity (re-organized Mitch&#039;s code) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Wirawan) Improve End-User Productivity with Distributed Computing of Partons CNF Data Generation [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch/Charles) Design of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities]&lt;br /&gt;
## (Mitch/Charles) Identify Requirements [TODO]&lt;br /&gt;
## (Spiros) Design a library that satisfies the requirements [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO with a supplement&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Re-organize Gagik&#039;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 &lt;br /&gt;
# (Spiros) Sizing function Modifications:&lt;br /&gt;
## Change way of calculating value for sampling points&lt;br /&gt;
### Old version: assign the value of sampling point using to the closest pixel value&lt;br /&gt;
### New version: assign the value of sampling point using interpolation over the image [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### 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.&lt;br /&gt;
## Change Default max-Edge from Diagonal * 1/10 to Diagonal 2/10 [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Reason of change: this way we create larger elements in regions that are not of interest&lt;br /&gt;
# (Spiros/Kevin/Mitch) Results:&lt;br /&gt;
## (Spiros/Kevin) [https://crtc.cs.odu.edu/CNF_Example_Meshes#GPDGK16_uH_img GPDGK16_uH_img] (with new sizing function) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Mitch generated the data the previous week&lt;br /&gt;
## (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] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles/Spiros) Generate Monte Carlo events of unpolarized DVCS Cross-Section &lt;br /&gt;
## Generalize Gagiks monte carlo kernel into 3D or N-Dimensional [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Implement &amp;quot;acceptance rejection&amp;quot; algorithm from [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://odu.box.com/s/m4xoofpqziz57jnvwlis9iqnm9toram5 VTK Interpolation]&lt;br /&gt;
## Updated Document on Interpolation with Simplices:  [https://odu.box.com/s/1jrq704pytgxafz9tvoe12jmbsjuc9rg Tessellation &amp;amp; Interpolation document] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Plot in ROOT CFF monte carlo events from tessellation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Generate unpolarized cross-section tessellation (needs to be parallelized ~10min per point) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) Add needed methods from Spiros&#039;s library [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Analyze CFF and Cross Section results&lt;br /&gt;
## Plot RMS deviation of cell points from CFF mesh&lt;br /&gt;
## Plot and fit t dependence of CFF at fixed value of Q&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, calculate RMSD of fit, extract fit parameters &lt;br /&gt;
# (All) [https://docs.google.com/presentation/d/1z_7XDMlsOUpJg-0yk0kMJmjLJdG4y7wx8bBrc_MMrC0/edit?usp=sharing CNF Adaptivity Pipeline] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] and good progress toward &amp;quot;Smart Lookup Table&amp;quot;[[File:Photo_Mid_Report_July16_2020.png|500px|Photo_Mid_Report_July16_2020.png]]&lt;br /&gt;
&lt;br /&gt;
=== Week July 20 - July 24 ===&lt;br /&gt;
# (Spiros) Implementation of [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart LookUp Table Utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interpolate Kevin&#039;s CDT3D meshes [https://odu.box.com/s/vpps3wl1k9szx213y95q6sj4mim36sts Box Folder] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch) Make flow-chart explanation of &amp;quot;smart look-up table&amp;quot; and Monte Carlo code   [https://docs.google.com/presentation/d/1KeR3h6ReyzVARX0qnBKaht97GCy0pa-6ruFDkmhoHMU/edit?usp=sharing] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Write driver for point look-up [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Done but needs testing&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Kevin) Generate mesh from PARTONS values generated on the boundaries of phase space volume&lt;br /&gt;
# (Mitch/Charles) Compare the different meshes and evaluate the accuracy of the interpolations&lt;br /&gt;
## Using barycenter [[Media:CentroidError.png]] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Charles) Change of variables for CFF generation from: ξ-&amp;gt; X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt;  and  t-&amp;gt;t&#039; . Reproduce mesh for new variables [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week July 27 - July 31 ===&lt;br /&gt;
# (Spiros) New version of CRTC_I2M docker file and documentation. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## The Changes for PODM3D are:&lt;br /&gt;
### --min-edge is now a parameter that expresses the percentage of the diagonal that will be used as min-edge. Default 1/ sqrt(3).&lt;br /&gt;
### (New parameter) --max-edge is a parameter that expresses the percentage of the diagonal that will be used as max-edge. Default 10.&lt;br /&gt;
### (New parameter) --parallel-mesh-results is a flag that computes the mesh results in parallel if more than 1 thread is used.&lt;br /&gt;
### (New parameter) --file-format is a parameter that defines the output format BINARY or ASCII. Default binary.&lt;br /&gt;
# (Mitch) Generate tessellations in X&amp;lt;sub&amp;gt;Bj&amp;lt;/sub&amp;gt; and t&#039; for imaginary and ln(real) parts of CFF using new PODM3D docker&lt;br /&gt;
## Plot interpolation error at the centroid&lt;br /&gt;
# (Mitch) Outline a code to compute DVCS cross-section&lt;br /&gt;
## Understand/modify the Bethe Heitler CS code &lt;br /&gt;
## Work through the Dirac algebra&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 3 - Aug 7 ===&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Get distance-based weight mean value of a point using k nearest points &lt;br /&gt;
# (Charles, Mitch)  New sizing function S[f,g]&lt;br /&gt;
## f = Im[CFF],  g = Re[CFF]&lt;br /&gt;
## for each simplex with points &#039;&#039;&#039;X&#039;&#039;&#039;(&#039;&#039;i&#039;&#039;) &#039;&#039;i=0,1,2,3,&#039;&#039; and functional values &#039;&#039;f(i), g(i)&#039;&#039; [[File:SizingReIm.png]]&lt;br /&gt;
## New variables:  Log10(xBj), Sqrt[t&#039;]/(0.5 GeV), Log2(Q2)&lt;br /&gt;
# (Charles, Mitch)  Competition to our Tessellation and Smart Look-up Tables from   FOAM structure in root.cern.ch software package&lt;br /&gt;
## S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
## Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 10 - Aug 14 ===&lt;br /&gt;
# (Spiros) Implement Sizing Functions with real and imaginary images [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [[File:SizingReIm.png]]&lt;br /&gt;
## Element weight range based:&lt;br /&gt;
### elementWeightRangeF = abs(max(f) - min(f))&lt;br /&gt;
### elementWeightRangeG = abs(max(g) - min(g))&lt;br /&gt;
### Condition1: elementWeightRangeF / imageWeightRangeF + elementWeightRangeG / imageWeightRangeG &amp;gt; 2 * elementWeightLimit&lt;br /&gt;
### Condition2: elementWeightRangeF / imageWeightRangeF &amp;gt; elementWeightLimit &amp;amp;&amp;amp; elementWeightRangeG / imageWeightRangeG &amp;gt; elementWeightLimit&lt;br /&gt;
## Results: will be produced on the spot&lt;br /&gt;
# (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 ] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Slice of 4D mesh&lt;br /&gt;
## Current implementation does not produce results with cells.&lt;br /&gt;
# (Mitch/Spiros) Update slides Look-up Table pipeline [https://docs.google.com/presentation/d/1HhL_PECZmL4CYFbrk65z-XIiCe1N0gWYS8gotFNfuyE/edit?usp=sharing]&lt;br /&gt;
# (Mitch) Review the Foam event generator [https://drive.google.com/file/d/1VOgkSdV6VUA_ZmufPRsQSLyP6AJBdg_Y/view?usp=sharing Foam]&lt;br /&gt;
# (Mitch) Produce meshes for ln(|real|) and imaginary for new variables using uniform tessellation and new sizing functions in (1)&lt;br /&gt;
## [[Media:uH_lnReal.png|Uniform mesh of the ln(|real|) part]] and [[Media:lnRealNoCrinkle.gif|Gif of evolution of the ln(|real|) part]]&lt;br /&gt;
## [[Media:CentroidError_lnReal.png|Barycenter error]]&lt;br /&gt;
=== Week Aug 17 - Aug 21 ===&lt;br /&gt;
# (All) Define the structure of the paper&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 24 - Aug 28 ===&lt;br /&gt;
# (Spiros/Wirawan/John/Mitch) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation] on Wahab&lt;br /&gt;
## (Wirawan/John/Spiros/) Sequentially&lt;br /&gt;
### (John) Set up a MySQL server on Wahab for partons [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Wirawan) Create a container with all the required dependencies [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Set it up and test it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Mitch) In a distributed way &lt;br /&gt;
### (Spiros) Create the required tools to run everything in a distributed way [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Test the ability to do it [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Notes:&lt;br /&gt;
#### (Spiros/Mitch) The execution time of the partons calculations on each node differs based on the coordinates of the kinematics that it calculates.&lt;br /&gt;
#### (Spiros) First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics.&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### (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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## (Spiros) In a shared memory way:&lt;br /&gt;
### 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. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) In a distributed + shared memory way:&lt;br /&gt;
### Create a script that runs partons in parallel using shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Create a script that runs partons in parallel using distributed + shared memory. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Done&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Speedup:&lt;br /&gt;
### [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
# (Mitch) Write script to calculate PARTONS images and generate meshes for all quark flavors and GPD Types.&lt;br /&gt;
## 4 quark flavors x 4 twist-2 GPDs x (real+imag) = 32 meshes&lt;br /&gt;
## Recalculate PARTONS values of vertices for each mesh&lt;br /&gt;
## Script to generate interpolation error histograms for each mesh&lt;br /&gt;
## 2D histogram of the standard deviations of each interpolation error histogram [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Week Aug 31 - Sept 3 ===&lt;br /&gt;
# (Spiros) [https://odu.app.box.com/folder/121612352972?s=ebnisy49hevzj5hap674ujnbtn4ujqrg Synthetic 4D data] [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create synthetic HyperCube and HyperSphere images&lt;br /&gt;
## Generate 4D uniform meshes out of the synthetic images&lt;br /&gt;
## Create a reader for the 4D meshes&lt;br /&gt;
&lt;br /&gt;
=== Week Sept 7 - Sept 11 ===&lt;br /&gt;
# (Mitch/Spiros) [https://crtc.cs.odu.edu/CNF:CNF_Data_Generation CNF Data Generation]&lt;br /&gt;
## Fix Axis ordering. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros/Mitch) PartonsToNRRD&lt;br /&gt;
## Generate Images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) PODM3D&lt;br /&gt;
## Handle cnf images with spacing other than 1. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Create meshes inside well-defined geometric domain . [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) [https://crtc.cs.odu.edu/CNF:Smart_LookUp_Table_Utilities Smart lookup table utilities]&lt;br /&gt;
## Get neighbors of a cell [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Interesting paper&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
=== Week Sept 28 - Oct 2 ===&lt;br /&gt;
# (Spiros) Extend Monte Carlo Event Generation to work with negative values [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate randomly uniform points inside a cell using: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt; with a potential supplement ==&lt;br /&gt;
# (Spiros) Compile a list of Utilities for pre- and post-processing functions for I2M conversion&lt;br /&gt;
## Examples should include: (i) fast search methods, (ii) smart lookup table functionality, etc.&lt;br /&gt;
# (All) Identify applications that could benefit from tessellations like nD numerical integration, data preservation, etc..&lt;br /&gt;
# (Spiros/Nikos) Explore Christian&#039;s request to compute 2D/3D function approximation for square/cube and a given analytic function defined on the square/cube&lt;br /&gt;
&lt;br /&gt;
= SURA CNF21 Project  (C2020-FEMT-006-01) =&lt;br /&gt;
== Objectives ==&lt;br /&gt;
* Close the adaptivity loop&lt;br /&gt;
* Deliver Parallel (Distributed) PARTONS&lt;br /&gt;
* Generate 4D tessellations on real data from PARTONS&lt;br /&gt;
* Publish a paper for the 3D CFF approximation&lt;br /&gt;
&lt;br /&gt;
== Short-term Deliverables (6 months) ==&lt;br /&gt;
# (Mitch) Use the Shared memory PARTONS to generate 4D data (by March 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Generate 4D Tessellations using the 4D data (by March 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Spiros) Deliver the Distributed version of PARTONS to Mitch (by April 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Mitch/Spiros) Generate Larger 4D tessellations and deliver these to N. Polys (by April 30) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (Christos/Spiros) Deliver an adaptive I2M Tessellator, that can add additional points. (by May 15) [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# (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)&lt;br /&gt;
# (All) work on the next proposals (Sept 30)&lt;br /&gt;
&lt;br /&gt;
== Weekly Reports ==&lt;br /&gt;
=== Week April 26 - May 2 ===&lt;br /&gt;
# Using the interpolation error as the sizing function is the way to go to close the &amp;quot;loop&amp;quot; for the following reasons:&lt;br /&gt;
## Performs exactly the amount of partons calculations (NO MORE) to guarantee that the interpolation error within every cell is below &amp;lt;= error-threshold&lt;br /&gt;
## Minimizes the number of points/cells of the mesh. The benefits of this are:&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster Monte Carlo Event Generation&lt;br /&gt;
### Fewer points/cells -&amp;gt; faster IO &lt;br /&gt;
## Enables the saving of all the CFFs into one mesh rather than creating a mesh for each CFF. The benefits of this are:&lt;br /&gt;
### Let&#039;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. &amp;lt;br&amp;gt; Creating the common denominator mesh of all these meshes will reduce the total PARTONS calculations by almost (!) as much as the number of CFFs.&lt;br /&gt;
### 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)). &amp;lt;br&amp;gt; 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)).&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Related Efforts&lt;br /&gt;
## Similar Effort identifed by Charles/Mitch to our Tessellation and Smart Look-up Tables from FOAM structure in root.cern.ch software package&lt;br /&gt;
### S. Jadach, Computer Physics Communications v.152, number 1 (2003) p.55  [http://www.sciencedirect.com/science/article/pii/S0010465502007555?via%3Dihub]&lt;br /&gt;
### Preprint ArXiv.org: [https://arxiv.org/abs/physics/0203033]&lt;br /&gt;
# Examples for the Journal paper on &amp;quot;Smart Loolup Tables for MC&amp;quot; &lt;br /&gt;
##&#039;&#039;&#039;Computer Physics Communications:&#039;&#039;&#039; [https://reader.elsevier.com/reader/sd/pii/S0010465520302423?token=62A1DEE0773D7DBA5F1869DD2E080F70865DCBEC7F89378DD98807130C5E565C2F775A9B028B96211CE3F6B49715A1DB ARTEMIS: Ab initio restructuring tool enabling the modeling of interface structures]&lt;br /&gt;
## &#039;&#039;&#039;Journal of Computational Physics:&#039;&#039;&#039; [https://www.sciencedirect.com/science/article/pii/S0021999117300670 Physics motivated example paper on tessellations from Journal of Computational Physics]&lt;br /&gt;
## &#039;&#039;&#039;Nature:&#039;&#039;&#039; [https://www.nature.com/articles/s41586-019-0925-9 Nature paper from JLab Nuclear Physics], [https://arxiv.org/pdf/2004.12065.pdf PDF]&lt;br /&gt;
## Other&lt;br /&gt;
### [https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21973 Paper relevant to tessellation and Monte Carlo calculations from Journal of Computational Chemistry]&lt;br /&gt;
# Other papers&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
## [https://link.springer.com/chapter/10.1007%2F978-3-319-76201-2_3 Interpolation on Unstructured Tetrahedral Grids]&lt;br /&gt;
&lt;br /&gt;
= Restricted Access (available to CNF Imaging Project i.e., CRTC/JLAB only) =&lt;br /&gt;
* [https://odu.box.com/s/ce6wc1ht1f96jx7lpafys1ue1piiyekc Shared box directory] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/Mesh-Generation/Parallel-Mesh-Generation/podm-superbuild PODM Docker image source files] &lt;br /&gt;
* [https://git-community.cs.odu.edu/crtc/websites/podm-documentation CRTC_I2M_Suite website build files]&lt;br /&gt;
* Adaptivity&lt;br /&gt;
** [[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
** [[CNF:CNF_Adaptivity]]&lt;br /&gt;
* [[CNF:Visualization for CNF data]]&lt;br /&gt;
* [[CNF:Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
* https://www.jlab.org/indico/event/335/&lt;br /&gt;
* [http://www.cs.odu.edu/crtc/videos/PODM3D.html Video of meshing procedure]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:Smart_LookUp_Table_Utilities&amp;diff=8458</id>
		<title>CNF:Smart LookUp Table Utilities</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:Smart_LookUp_Table_Utilities&amp;diff=8458"/>
		<updated>2021-04-21T17:46:01Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/smartlookuptableutilities Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/SmartLookUpTableUtilities Github]&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Find Cell that includes a point (2D/3D)✔&lt;br /&gt;
# Get points of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get points weights of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get the volume of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get centroid coordinates of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get the interpolated weight of a point inside a cell (2D/3D/4D) ✔&lt;br /&gt;
&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Get neighbors of a cell (3D) ✔&lt;br /&gt;
&lt;br /&gt;
== Spring 2021 ==&lt;br /&gt;
# Use meshes with double precision weights array ✔&lt;br /&gt;
# Find Cell with exact predicates [TODO]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8457</id>
		<title>Internal:GPCD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8457"/>
		<updated>2021-04-20T18:39:49Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* (Angelos/Spiros) Cavity Detection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavities ===&lt;br /&gt;
Cavities are structural features of proteins and they are often important for drug discovery and design. There are different kinds of cavities, including pockets, voids, tunnels, and channels. The types of cavities are listed in more detail in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityTypes.jpg|center|frame| Figure 1: The basic types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Void&#039;&#039;&#039;: A cavity that looks like internal &amp;quot;hole&amp;quot; in a protein with no connection to the surface.&lt;br /&gt;
# &#039;&#039;&#039;Cleft&#039;&#039;&#039;: A pocket that looks like a &amp;quot;dent&amp;quot; in the surface of a protein. Can also be found as part of a tunnel or channel.&lt;br /&gt;
# &#039;&#039;&#039;Invagination&#039;&#039;&#039;: A pocket that looks like a &amp;quot;cove&amp;quot;. It has a small opening on the surface of a protein and leads to a larger interior. Can also be found as part of a tunnel or after a cleft.&lt;br /&gt;
# &#039;&#039;&#039;Tunnel&#039;&#039;&#039;: A pocket that has an opening on the surface of a protein and leads to somewhere in the interior. Has no opening on the other side.&lt;br /&gt;
# &#039;&#039;&#039;Channel&#039;&#039;&#039;: A cavity that has an opening on one side of the surface of a protein and leads to another opening in another location on the surface of the protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course, the types of cavities listed in figure 1 are only the basic ones. Combinations of these are also possible as shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityAdvancedTypes.jpg|center|frame| Figure 2: Combination types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavity Detection Methods ===&lt;br /&gt;
There are several methods for detecting protein cavities. There are sphere based methods, grid based methods, grid-and-sphere based methods, surface based methods, grid-and-surface based methods, time-varying methods, GPU based methods, consensus based methods, and finally tessellation based methods. These algorithms are shown in more detail in figure 3. Tessellation based methods mainly rely on Voronoi tessellation. Some methods rely on weighted Voronoi tessellation because of its ability to more accurately represent the volume of atoms. The Voronoi tessellation in these methods is computed from a set of points representing the atomic centers of the underlying protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityDetectionAlgorithms.jpg|center|frame| Figure 3: A hierarchy of protein cavity detection algorithms [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literature Review ==&lt;br /&gt;
&lt;br /&gt;
=== MOLE ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MOLE algorithm is specifically designed to identify tunnels and channels. Finding superficial cavities is a secondary concern and does so as part of the surface approximation step. MOLE utilizes the surface obtained by the refinement of the convex hull to find superficial cavities such as clefts and invaginations. In essence, the approximation of a more accurate surface and the detection of these superficial cavities are closely related. As tetrahedra are removed from the convex hull to get a more accurate surface approximation, a parameter called &#039;&#039;interior threshold&#039;&#039; controls how many superficial cavities are found. For example, if the number of tetrahedra removed from a specific part of the molecule exceeds this threshold, the algorithm marks these tetrahedra as part of a superficial cavity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:moleVoronoiTunnelPath.jpg|center|frame| Figure 4: Shows in 2D the Voronoi diagram (thin lines) and the convex hull (dotted line) of molecule represented by atoms (circles). Each Voronoi edge is evaluated by the cost function (numbers). The thick line represents the optimal path found by the Dijkstra&#039;s algorithm from the given starting point (black circle), i.e., centerline of found tunnel. [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the more complicated types of cavities, tunnels and channels, MOLE uses the Voronoi diagram to identify them. Start and end points are defined as the centers of the deepest tetrahedra in each cavity. The depth of the tetrahedron is defined as the number of Voronoi edges from the closest boundary tetrahedron (on the surface). Tunnels/channels are computed as the shortest paths between all pairs of start and end points in the same cavity diagram.&lt;br /&gt;
&lt;br /&gt;
[[File:MoleDijkstraWeightFunction.png|center|frame| Figure 5: Shows the weight function used to estimate the weight of each Voronoi edge for Dijkstra&#039;s algorihtm. l(e) is the length of the edge, d(e) is the distance of the edge to the closest atom Van der Waals sphere and ϵ is a small number to avoid division by zero [1]]]&lt;br /&gt;
&lt;br /&gt;
==== Complexity ====&lt;br /&gt;
* Worst-case: O(N^2 log N), where N is the number of atoms in the molecule. &lt;br /&gt;
* Average: O(M log M), where M is the number of vertices in the Voronoi diagram (in the worst case, M = N^2, but in most cases M = O(N)). As a result of the use of the incremental algorithm and Hilbert curve ordering, the complexity of calculating the Delaunay triangulation of most molecular structures is O(N log N). Finally, the complexity of all the remaining steps of the algorithm is at most O(M log M).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MolAxis ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MolAxis algorithm relies on Voronoi and Dijkstra&#039;s algorithm to find channels, similarly to MOLE. The algorithm consists of the following high-level steps:&lt;br /&gt;
&lt;br /&gt;
# Approximate the molecule using a collection of &#039;&#039;&#039;fixed-size spheres&#039;&#039;&#039;. The number of balls needed depends on the required quality of the approximation. In the extreme case, where the user is interested in a high resolution, each atom is approximated using a single sphere. &lt;br /&gt;
# Compute the &#039;&#039;&#039;Voronoi diagram&#039;&#039;&#039; of the centers of the fixed-sized spheres. The diagram is intersected with a user-defined bounding sphere. This defines the area of interest.&lt;br /&gt;
# Discard the parts of the Voronoi diagram that intersect the molecule.&lt;br /&gt;
# Define a &#039;&#039;&#039;graph&#039;&#039;&#039;, using the Voronoi vertices and edges. A weight is given to each edge, which depends on its length and on its distance from the surface of the molecule. &lt;br /&gt;
# Define a &#039;&#039;&#039;source point (root vertex)&#039;&#039;&#039;. The user can either supply a source point or allow MolAxis to automatically choose the source point to be the &#039;&#039;&#039;center of the largest cavity in the molecule&#039;&#039;&#039; (basically detect channels inside-out).&lt;br /&gt;
# Apply a shortest path optimization algorithm (&#039;&#039;&#039;Dijktra&#039;s algorithm&#039;&#039;&#039;) on the graph, computing a tree called the &amp;quot;corridor tree&amp;quot;.&lt;br /&gt;
# The desired channels are paths in the corridor tree. Duplicate channels are avoided by using the split distance parameter. The split distance bounds the distance to the least common ancestor of the channel and all previously reported channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MolAxisVoronoi.png|center|frame| Figure 6: Shows an example of fixed-size circles (light-blue) approximating varying-size circles and the pathway diagram of their centers. The discarded portion of the Voronoi diagram of their centers is depicted using dotted lines [2]. This figure also helps illustrate the usefulness of the Voronoi tessellation in computing pathways.]]&lt;br /&gt;
&lt;br /&gt;
== Protein Energetics ==&lt;br /&gt;
=== Metrics ===&lt;br /&gt;
# &#039;&#039;&#039;Hydrophobicity&#039;&#039;&#039;: Physical property of a molecule that is seemingly repelled from a mass of water. Hydrophilic molecules are attracted to water. Hydrophobicity plays a major role in protein folding. Hydrophobic molecules also tend to be nonpolar and prefer other neutral molecules and nonpolar solvents. Hydrophobicity is the most widely used metric.&lt;br /&gt;
# &#039;&#039;&#039;Hydrogen Bonds&#039;&#039;&#039;: Weak bonds between two molecules resulting from an electrostatic attraction between a proton in one molecule and an electronegative atom in the other. We often see these bonds between oxygen and hydrogen.&lt;br /&gt;
# &#039;&#039;&#039;Van der Waals Interactions&#039;&#039;&#039;: Also known as Van der Waals forces, they are forces driven by induced electrical interactions between two or more atoms or molecules that are very close to each other. Van der Waals interaction is the weakest of all intermolecular attractions between molecules. These forces are distance-dependent.&lt;br /&gt;
# &#039;&#039;&#039;Salt Bridges&#039;&#039;&#039;: Non-covalent (no sharing of eletrons; electromagnetic) interaction between two ionized sites. It has two components: a hydrogen bond and an electrostatic interaction.&lt;br /&gt;
# &#039;&#039;&#039;Disulfide Bridges&#039;&#039;&#039;: Strong bonds that can form between two cysteines (an amino acid). The strength of disulfide bridges helps stabilize a protein. Disulfide bridges are especially common in proteins that are secreted from cells.&lt;br /&gt;
# &#039;&#039;&#039;Charge&#039;&#039;&#039;: Plays a role in strength of bonds. A higher charge means that an atom will have stronger forces in an electromagnetic field.&lt;br /&gt;
# &#039;&#039;&#039;Polarity&#039;&#039;&#039;: Separation of electric charge leading to a molecule or its chemical groups having an electric dipole moment, with a negatively charged end and a positively charged end. Indicates the existence of polar bonds, which are covalent (sharing of electrons) and are quite strong. About [https://chem.libretexts.org/Bookshelves/Inorganic_Chemistry/Book%3A_Introduction_to_Inorganic_Chemistry/01%3A_Review_of_Chemical_Bonding/1.04%3A_Bond_Polarity_and_Bond_Strength bond polarity].&lt;br /&gt;
&lt;br /&gt;
== Candidate Method: Geometric Protein Cavities Detection (&#039;&#039;&#039;GPCD&#039;&#039;&#039;) ==&lt;br /&gt;
The Pipeline contains the following high-level algorithmic steps:&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Read protein ===&lt;br /&gt;
# Input: PDB file&lt;br /&gt;
# Output: A Polydata of the protein&lt;br /&gt;
# Algorithmic Step:&lt;br /&gt;
## (Angelos) Using vtkPDBReader, read the PDB file that included the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos) Upgrade vtkPDBReader to be able to manage multimodel proteins [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Fix vtkPDBReader error of setting wrong atom numbers [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Set up vtkPDBReader to utilize [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] for the Covalent radius and Van-der-Waals radius [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Improve [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] by using: [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### updated Van-der-Waals radius values provided by Los Alamos National Laboratory&lt;br /&gt;
### updated Covalent radius values provided by Cambridge Structural Database&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Extract unique protein Chains ===&lt;br /&gt;
# Input:  A Polydata of the protein&lt;br /&gt;
# Output: Unique protein chains without het-atoms and Symmetric Information&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a filter that removes the het-atoms and creates the polydata of the protein chains. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Detect the unique protein chains using Symmetry detection techniques ([https://en.wikipedia.org/wiki/Kabsch_algorithm Kabsch algorithm]) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Store the Symmetry information (rotation and translation). [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: This way we can mesh each unique chain individually&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Sort Atoms By Radius ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms&lt;br /&gt;
# Output: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using vtkSortFieldData we sort the non-Het atoms by radius in descending order. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed using vtkSMPTools [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Αngelos) Compute the Solvent Excluded Image ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order, probe radius, spacing&lt;br /&gt;
# Output: Solvent Excluded Image of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros) Calculate the optimal bounding box of the protein chain using CGAL&#039;s implementation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Angelos) Create the Solvent Accessible image by creating spheres for each atom that their radius is: Van der Waals radius + probe radius. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos) Perform Euclidean Distance Transform on the Solvent Accessible image using the &#039;&#039;&#039;itk::SignedMaurerDistanceMapImageFilter&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
## (Spiros) Extract Solvent Excluded image from the EDT result by setting: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### All pixel values &amp;lt; probe-radius - truncationError[atomType] - paddingDistance = 0&lt;br /&gt;
### All pixel values &amp;gt;= probe-radius - truncationError[atomType] - paddingDistance = 1&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros) Handle the calculation of truncationError[atomType] in a thread-safe way by sorting the atoms by radius in descending order [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Truncation error is caused because of the spacing of the image.&lt;br /&gt;
## (Spiros/Angelos) Select a paddingDistance value to help PODM3D produce an accurate surface [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Close holes that should not exist using the distance of the pixel point vs the actual atom [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Create smaller images using the concept that is described in the EDTSurf paper [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Compute the Solvent Excluded Surface (&#039;&#039;&#039;SES&#039;&#039;&#039;)===&lt;br /&gt;
# Input: Solvent Excluded Image of a chain&lt;br /&gt;
# Output: Solvent Excluded Surface of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, produce a volumetric mesh of the image. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, extract the volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;vtkDataSetSurfaceFilter&#039;&#039;&#039;, extract the surface of volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039; this filter is used because when PODM is extracting the surface, its triangles are oriented the wrong way.&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Advantages:&lt;br /&gt;
## Can control the number of elements on the surface&lt;br /&gt;
## the edge lengths bounds are relatively small which helps in the clustering.&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Select a default delta value. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fix volume grading crashing. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Surface needs to be smoothed. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Extract Atom Types of surface points ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain surface and a Polydata of the unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Output: Atom Types of surface points of the unique protein chain surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using a KD-tree, for each surface point, find the closest atom: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If the surface point is within the radius of the closest atom, assign the atom type of the closest point to the surface point&lt;br /&gt;
### Else, assign &#039;&#039;&#039;0&#039;&#039;&#039;, which means the surface point is part of the re-entrance surface.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Find an ideal offset distance value between the surface points and their closest atoms to improve accuracy. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Generate the Symmetric Protein chain surfaces ===&lt;br /&gt;
# Input: A vector of the unique protein chain surfaces and the Symmetry information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;SymmetricProteinChainsSurface&#039;&#039;&#039; filter that generates the non unique protein chain surfaces using the Symmetry information. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Assign Model and Chain arrays on SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces &amp;amp; model and chains information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;AssignModelAndChain&#039;&#039;&#039; filter that assigns the model and chain arrays for each protein chain surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Merge Protein Chain SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Output: Solvent Excluded Surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;MergeSurfaces&#039;&#039;&#039; filter that merges all the protein-chains surfaces into one and forms the solvent excluded surface of the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Compute ambient occlusion of the SES === &lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Ambient Occlusion values of surface points, normals of surface points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos/Spiros) Using IGL Library, which uses [https://www.embree.org/ Embree] and [https://eigen.tuxfamily.org/dox/ Eigen], calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Using the CUDA and Optix library, calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: GPU parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros/Angelos) Eliminate the noise that is created due to the non-smoothed &#039;&#039;&#039;PODM3D&#039;&#039;&#039; surface by assigning for each vertex the average ambient occlusion value of its neighbors + itself. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Use the symmetry information to minimize the memory footprint for CPU and GPU [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Compute Surface Statistics ===&lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Statistics of Surface Triangles&#039; Edges&lt;br /&gt;
# Algoritmic step:&lt;br /&gt;
## Compute min/mean/median/max edge lengths of the surface triangles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Cavity Detection ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Ambient Occlusion values of surface points, Surface Statistics&lt;br /&gt;
# Output: Protein Cavities&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a modified version of the clustering method &#039;&#039;&#039;DBSCAN&#039;&#039;&#039;, that finds neighbors based on their density &#039;&#039;&#039;and&#039;&#039;&#039; ambient occlusion values, form clusters that define protein cavities. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Idea 1: [https://link.springer.com/article/10.1023/A:1009884809343 A Fast Parallel Clustering Algorithm for Large Spatial Databases PDBSCAN]&lt;br /&gt;
#### Idea 2: Speculative Execution using &#039;&#039;&#039;PREMA&#039;&#039;&#039;&lt;br /&gt;
## (Angelos) Implement a rendering framework to visualize the clustering process using &#039;&#039;&#039;VTK&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Tune the clustering parameters:&lt;br /&gt;
### (Spiros) Search-radius = 2 * minEdgeLength of the surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Esp = 8. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros) Min cavity size = cavityFactor * delta^-2.178. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Default value of cavityFactor = 20.&lt;br /&gt;
## Limit the expansion of the cavity by using: &lt;br /&gt;
### (Spiros) A relative threshold for the difference an occlusion value from the average occlusion value of the cluster. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Define weights for the occlusion values, and convert the mean to a weighted mean. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Define occlusion values bounds to detect different types of cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## [https://dl.acm.org/doi/abs/10.1145/304181.304187 OPTICS: ordering points to identify the clustering structure] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Use symmetry information to quickly detect the per-model cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Angelos) Map Electrostatics Potentials on Surface Points ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Electrostatic Potentials Image &#039;&#039;&#039;ESP&#039;&#039;&#039; of [http://www.poissonboltzmann.org/ APBS], normals of surface points, probe radius, lowerThreshold-upperThreshold&lt;br /&gt;
# Output: Electrostatic values of surface points&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros/Angelos) For each surface point: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Scale the point using normals, and probe radius to the solvent-accessible surface, &lt;br /&gt;
### Get the value of the closest pixel from the &#039;&#039;&#039;ESP&#039;&#039;&#039; to the scaled point:&lt;br /&gt;
#### If value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
#### Else if, value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
#### Else get the interpolated value of the scaled points from the image:&lt;br /&gt;
##### If interpolated value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
##### Else if, interpolated value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos/Spiros) Create reader of the [https://www.ics.uci.edu/~dock/manuals/apbs/html/user-guide/x2674.html OpenDx] file format that is used as output by APBS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Select Clustered cavity points ===&lt;br /&gt;
# Input: Labeled Solvent Surface Surface&lt;br /&gt;
# Output: Labeled clustered cavity points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a SelectPoints filter. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Select only the points that are clustered at the cavity detection step. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: this is done to improve the speed of writing the output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Write Results:  ===&lt;br /&gt;
# Input: Labeled clustered cavity points or Labeled Solvent Surface Surface&lt;br /&gt;
# Output: solventSurface.vtp&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a vtkXMLPolyDataWriter, write the output file. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Create a writer, just for the cavities to minimize the IO. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Idea: See &#039;&#039;&#039;Fpocket&#039;&#039;&#039;.&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Note: a Paraview plugin may be developed for visualization purposes. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Classify cavity type ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Atomic Cavities, Atom Types of surface points&lt;br /&gt;
# Output: Labeled atomic Cavities&lt;br /&gt;
# Algorithm steps:&lt;br /&gt;
# Ideas that might be used: &lt;br /&gt;
## Ambient occlusion values based classification using mean distance cluster value [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Analyze the shape of clusters to identify what type of cavity they are. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### This can potentially be done using machine learning.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== GPCD vs MOLE ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| GPCD&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| MOLE&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Surface Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Interior Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Visualize Exact Channel Shape&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Very Large Molecules&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO (very slow)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Multi-Model Files&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Parallelization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Relative Performance&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | VERY FAST&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | SLOW&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Intuitive Visualization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| False Positives&lt;br /&gt;
| style=&amp;quot;background-color: orange; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Quantify Major Structural Features&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rbvi.ucsf.edu/chimerax/ UCSF ChimeraX]&#039;&#039;&#039;: Next-generation molecular visualization program from the Resource for Biocomputing, Visualization, and Informatics (RBVI).&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/vmd/ VMD]&#039;&#039;&#039;: Molecular visualization program for displaying, animating, and analyzing large biomolecular systems using 3D graphics and built-in scripting. Used in conjunction with NAMD for visualizing molecular dynamics simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/namd/ NAMD]&#039;&#039;&#039;: Parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. Scales to hundreds of cores for typical simulations and beyond 500,000 cores for the largest simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/Platform/App/Mole MOLE]&#039;&#039;&#039;: Universal toolkit for rapid location and characterization of channels and pores in biomacromolecules.&lt;br /&gt;
* &#039;&#039;&#039;[https://caver.cz/ CAVER]&#039;&#039;&#039;: Software tool for the analysis and visualization of tunnels and channels in protein structures.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/ RCSB PDB Protein Data Bank]&#039;&#039;&#039;: The largest and most popular database of protein structures.&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5839519/ Survey: Geometric Protein Cavity Detection Algorithms]&#039;&#039;&#039;: Paper surveying the current geometric algorithms for protein cavity detection. This is a great resource for understanding this project.&lt;br /&gt;
* &#039;&#039;&#039;[https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-39 MOLE 2.0]&#039;&#039;&#039;: Paper describing the MOLE 2.0 protein cavity detection software. Contains a good algorithm that can be used for extracting a good approximation of the surface of a point cloud of atoms.&lt;br /&gt;
* &#039;&#039;&#039;[https://reader.elsevier.com/reader/sd/pii/S0969212607003759?token=4D0F6192E971D4406E8F7CBA047B0490C8715EBD67579D26427E0E63BD0298BEBF948DB238A28E4EAE2D17EBC6DF4E50 MOLE 1.0]&#039;&#039;&#039;: Paper describing the MOLE 1.0 algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/epdf/10.1002/prot.22052 MolAxis]&#039;&#039;&#039;: Paper describing the MolAxis protein cavity detection software.&lt;br /&gt;
* &#039;&#039;&#039;[https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002708 CAVER 3.0]&#039;&#039;&#039;: Paper describing the CAVER 3.0 protein cavity detection software. This algorithm specializes in identifying tunnels.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.sciencedirect.com/science/article/abs/pii/S0022283606008746 Travel Depth]&#039;&#039;&#039;: Paper describing the &amp;quot;travel depth&amp;quot; algorithm for protein cavity visualization.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/full/10.1111/cgf.12120 GPU Protein Cavity Detection using Ambient Occlusion]&#039;&#039;&#039;: Paper describing a GPU-based protein cavity detection algorithm that utilizes Ambient Occlusion.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf DBSCAN]&#039;&#039;&#039;: Paper describing the DBSCAN clustering algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://link.springer.com/article/10.1023/A:1009884809343 PDBSCAN]&#039;&#039;&#039;: Paper describing a parallel version of DBSCAN.&lt;br /&gt;
* &#039;&#039;&#039;[https://pubmed.ncbi.nlm.nih.gov/31133031/ Coronavirus envelope protein]&#039;&#039;&#039;: Paper describing research on the envelope protein of coronaviruses.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.cell.com/biophysj/fulltext/S0006-3495(20)33168-4 COVID-19 virion model]&#039;&#039;&#039;: Paper describing a detail model of the SARS-CoV-2 virus particle.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7685317/pdf/nihpp-2020.11.19.390187.pdf COVID-19 simulation]&#039;&#039;&#039;: Paper describing large-scale COVID-19 simulations.&lt;br /&gt;
&lt;br /&gt;
=== Organizations/Groups ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/ University of Illinois at Urbana-Champaign: Theoretical and Computational Biophysics Group]&#039;&#039;&#039;: Perhaps the most important group in molecular dynamics. Developers of VMD and NAMD. Ran the simulation for the 200 million atom model of COVID-19.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/ Oak Ridge National Laboratory (ORNL)]&#039;&#039;&#039;: Major national lab with active involvement in drug discovery and design using supercomputers.&lt;br /&gt;
* &#039;&#039;&#039;[http://rbvi.ucsf.edu/ Resource for Biocomputing, Visualization, and Informatics (RBVI)]&#039;&#039;&#039;: Developers of UCSF Chimera and UCSF ChimeraX.&lt;br /&gt;
* &#039;&#039;&#039;[https://ist.ac.at/en/research/edelsbrunner-group/ IST Austria: Edelsbrunner Group]&#039;&#039;&#039;: Important group in algorithms, computational geometry, and computational topology. Involved with protein cavity detection in the past and potentially involved now. The head of the group, Edelsbrunner created alpha shapes.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tacc.utexas.edu/systems/frontera Texas Advanced Computing Center]&#039;&#039;&#039;: Maintainers of the Frontera supercomputer, the fifth fastest supercomputer in the world (2020). The simulation for the 200 million atom model of COVID-19 was executed on this supercomputer.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/ WebChemistry]&#039;&#039;&#039;: Developed MOLE and many other software tools related to molecular analysis.&lt;br /&gt;
&lt;br /&gt;
=== Important Links ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.hpcwire.com/off-the-wire/coronavirus-massive-simulations-completed-on-frontera-supercomputer/ COVID-19 200 million atom NAMD simulation]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/news/early-research-existing-drug-compounds-supercomputing-could-combat-coronavirus/ ORNL COVID-19 spike drug identification]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Proteins ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/1jj2 Large Ribosomal Subunit (98,693 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VXX COVID-19 Spike Glycoprotein, Closed State (23,694 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6Y2E COVID-19 Main Protease (5,370 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VWW COVID-19 NSP15 Endoribonuclease (24,036 atoms)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] Simões, T., Lopes, D., Dias, S., Fernandes, F., Pereira, J., Jorge, J., Bajaj, C., &amp;amp; Gomes, A. (2017). Geometric Detection Algorithms for Cavities on Protein Surfaces in Molecular Graphics: A Survey. Computer graphics forum : journal of the European Association for Computer Graphics, 36(8), 643–683. https://doi.org/10.1111/cgf.13158&lt;br /&gt;
&lt;br /&gt;
[2] Yaffe, Fishelovitch, Wolfson, Halperin, &amp;amp; Nussinov. (2008). MolAxis: Efficient and accurate identification of channels in macromolecules. Proteins: Structure, Function, and Bioinformatics, 73(1), 72-86.&lt;br /&gt;
&lt;br /&gt;
[3] Coleman, R. G., &amp;amp; Sharp, K. A. (2006). Travel depth, a new shape descriptor for macromolecules: application to ligand binding. Journal of molecular biology, 362(3), 441–458. https://doi.org/10.1016/j.jmb.2006.07.022&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8456</id>
		<title>Internal:GPCD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8456"/>
		<updated>2021-04-20T18:39:01Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* (Angelos/Spiros) Cavity Detection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavities ===&lt;br /&gt;
Cavities are structural features of proteins and they are often important for drug discovery and design. There are different kinds of cavities, including pockets, voids, tunnels, and channels. The types of cavities are listed in more detail in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityTypes.jpg|center|frame| Figure 1: The basic types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Void&#039;&#039;&#039;: A cavity that looks like internal &amp;quot;hole&amp;quot; in a protein with no connection to the surface.&lt;br /&gt;
# &#039;&#039;&#039;Cleft&#039;&#039;&#039;: A pocket that looks like a &amp;quot;dent&amp;quot; in the surface of a protein. Can also be found as part of a tunnel or channel.&lt;br /&gt;
# &#039;&#039;&#039;Invagination&#039;&#039;&#039;: A pocket that looks like a &amp;quot;cove&amp;quot;. It has a small opening on the surface of a protein and leads to a larger interior. Can also be found as part of a tunnel or after a cleft.&lt;br /&gt;
# &#039;&#039;&#039;Tunnel&#039;&#039;&#039;: A pocket that has an opening on the surface of a protein and leads to somewhere in the interior. Has no opening on the other side.&lt;br /&gt;
# &#039;&#039;&#039;Channel&#039;&#039;&#039;: A cavity that has an opening on one side of the surface of a protein and leads to another opening in another location on the surface of the protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course, the types of cavities listed in figure 1 are only the basic ones. Combinations of these are also possible as shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityAdvancedTypes.jpg|center|frame| Figure 2: Combination types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavity Detection Methods ===&lt;br /&gt;
There are several methods for detecting protein cavities. There are sphere based methods, grid based methods, grid-and-sphere based methods, surface based methods, grid-and-surface based methods, time-varying methods, GPU based methods, consensus based methods, and finally tessellation based methods. These algorithms are shown in more detail in figure 3. Tessellation based methods mainly rely on Voronoi tessellation. Some methods rely on weighted Voronoi tessellation because of its ability to more accurately represent the volume of atoms. The Voronoi tessellation in these methods is computed from a set of points representing the atomic centers of the underlying protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityDetectionAlgorithms.jpg|center|frame| Figure 3: A hierarchy of protein cavity detection algorithms [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literature Review ==&lt;br /&gt;
&lt;br /&gt;
=== MOLE ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MOLE algorithm is specifically designed to identify tunnels and channels. Finding superficial cavities is a secondary concern and does so as part of the surface approximation step. MOLE utilizes the surface obtained by the refinement of the convex hull to find superficial cavities such as clefts and invaginations. In essence, the approximation of a more accurate surface and the detection of these superficial cavities are closely related. As tetrahedra are removed from the convex hull to get a more accurate surface approximation, a parameter called &#039;&#039;interior threshold&#039;&#039; controls how many superficial cavities are found. For example, if the number of tetrahedra removed from a specific part of the molecule exceeds this threshold, the algorithm marks these tetrahedra as part of a superficial cavity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:moleVoronoiTunnelPath.jpg|center|frame| Figure 4: Shows in 2D the Voronoi diagram (thin lines) and the convex hull (dotted line) of molecule represented by atoms (circles). Each Voronoi edge is evaluated by the cost function (numbers). The thick line represents the optimal path found by the Dijkstra&#039;s algorithm from the given starting point (black circle), i.e., centerline of found tunnel. [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the more complicated types of cavities, tunnels and channels, MOLE uses the Voronoi diagram to identify them. Start and end points are defined as the centers of the deepest tetrahedra in each cavity. The depth of the tetrahedron is defined as the number of Voronoi edges from the closest boundary tetrahedron (on the surface). Tunnels/channels are computed as the shortest paths between all pairs of start and end points in the same cavity diagram.&lt;br /&gt;
&lt;br /&gt;
[[File:MoleDijkstraWeightFunction.png|center|frame| Figure 5: Shows the weight function used to estimate the weight of each Voronoi edge for Dijkstra&#039;s algorihtm. l(e) is the length of the edge, d(e) is the distance of the edge to the closest atom Van der Waals sphere and ϵ is a small number to avoid division by zero [1]]]&lt;br /&gt;
&lt;br /&gt;
==== Complexity ====&lt;br /&gt;
* Worst-case: O(N^2 log N), where N is the number of atoms in the molecule. &lt;br /&gt;
* Average: O(M log M), where M is the number of vertices in the Voronoi diagram (in the worst case, M = N^2, but in most cases M = O(N)). As a result of the use of the incremental algorithm and Hilbert curve ordering, the complexity of calculating the Delaunay triangulation of most molecular structures is O(N log N). Finally, the complexity of all the remaining steps of the algorithm is at most O(M log M).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MolAxis ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MolAxis algorithm relies on Voronoi and Dijkstra&#039;s algorithm to find channels, similarly to MOLE. The algorithm consists of the following high-level steps:&lt;br /&gt;
&lt;br /&gt;
# Approximate the molecule using a collection of &#039;&#039;&#039;fixed-size spheres&#039;&#039;&#039;. The number of balls needed depends on the required quality of the approximation. In the extreme case, where the user is interested in a high resolution, each atom is approximated using a single sphere. &lt;br /&gt;
# Compute the &#039;&#039;&#039;Voronoi diagram&#039;&#039;&#039; of the centers of the fixed-sized spheres. The diagram is intersected with a user-defined bounding sphere. This defines the area of interest.&lt;br /&gt;
# Discard the parts of the Voronoi diagram that intersect the molecule.&lt;br /&gt;
# Define a &#039;&#039;&#039;graph&#039;&#039;&#039;, using the Voronoi vertices and edges. A weight is given to each edge, which depends on its length and on its distance from the surface of the molecule. &lt;br /&gt;
# Define a &#039;&#039;&#039;source point (root vertex)&#039;&#039;&#039;. The user can either supply a source point or allow MolAxis to automatically choose the source point to be the &#039;&#039;&#039;center of the largest cavity in the molecule&#039;&#039;&#039; (basically detect channels inside-out).&lt;br /&gt;
# Apply a shortest path optimization algorithm (&#039;&#039;&#039;Dijktra&#039;s algorithm&#039;&#039;&#039;) on the graph, computing a tree called the &amp;quot;corridor tree&amp;quot;.&lt;br /&gt;
# The desired channels are paths in the corridor tree. Duplicate channels are avoided by using the split distance parameter. The split distance bounds the distance to the least common ancestor of the channel and all previously reported channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MolAxisVoronoi.png|center|frame| Figure 6: Shows an example of fixed-size circles (light-blue) approximating varying-size circles and the pathway diagram of their centers. The discarded portion of the Voronoi diagram of their centers is depicted using dotted lines [2]. This figure also helps illustrate the usefulness of the Voronoi tessellation in computing pathways.]]&lt;br /&gt;
&lt;br /&gt;
== Protein Energetics ==&lt;br /&gt;
=== Metrics ===&lt;br /&gt;
# &#039;&#039;&#039;Hydrophobicity&#039;&#039;&#039;: Physical property of a molecule that is seemingly repelled from a mass of water. Hydrophilic molecules are attracted to water. Hydrophobicity plays a major role in protein folding. Hydrophobic molecules also tend to be nonpolar and prefer other neutral molecules and nonpolar solvents. Hydrophobicity is the most widely used metric.&lt;br /&gt;
# &#039;&#039;&#039;Hydrogen Bonds&#039;&#039;&#039;: Weak bonds between two molecules resulting from an electrostatic attraction between a proton in one molecule and an electronegative atom in the other. We often see these bonds between oxygen and hydrogen.&lt;br /&gt;
# &#039;&#039;&#039;Van der Waals Interactions&#039;&#039;&#039;: Also known as Van der Waals forces, they are forces driven by induced electrical interactions between two or more atoms or molecules that are very close to each other. Van der Waals interaction is the weakest of all intermolecular attractions between molecules. These forces are distance-dependent.&lt;br /&gt;
# &#039;&#039;&#039;Salt Bridges&#039;&#039;&#039;: Non-covalent (no sharing of eletrons; electromagnetic) interaction between two ionized sites. It has two components: a hydrogen bond and an electrostatic interaction.&lt;br /&gt;
# &#039;&#039;&#039;Disulfide Bridges&#039;&#039;&#039;: Strong bonds that can form between two cysteines (an amino acid). The strength of disulfide bridges helps stabilize a protein. Disulfide bridges are especially common in proteins that are secreted from cells.&lt;br /&gt;
# &#039;&#039;&#039;Charge&#039;&#039;&#039;: Plays a role in strength of bonds. A higher charge means that an atom will have stronger forces in an electromagnetic field.&lt;br /&gt;
# &#039;&#039;&#039;Polarity&#039;&#039;&#039;: Separation of electric charge leading to a molecule or its chemical groups having an electric dipole moment, with a negatively charged end and a positively charged end. Indicates the existence of polar bonds, which are covalent (sharing of electrons) and are quite strong. About [https://chem.libretexts.org/Bookshelves/Inorganic_Chemistry/Book%3A_Introduction_to_Inorganic_Chemistry/01%3A_Review_of_Chemical_Bonding/1.04%3A_Bond_Polarity_and_Bond_Strength bond polarity].&lt;br /&gt;
&lt;br /&gt;
== Candidate Method: Geometric Protein Cavities Detection (&#039;&#039;&#039;GPCD&#039;&#039;&#039;) ==&lt;br /&gt;
The Pipeline contains the following high-level algorithmic steps:&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Read protein ===&lt;br /&gt;
# Input: PDB file&lt;br /&gt;
# Output: A Polydata of the protein&lt;br /&gt;
# Algorithmic Step:&lt;br /&gt;
## (Angelos) Using vtkPDBReader, read the PDB file that included the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos) Upgrade vtkPDBReader to be able to manage multimodel proteins [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Fix vtkPDBReader error of setting wrong atom numbers [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Set up vtkPDBReader to utilize [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] for the Covalent radius and Van-der-Waals radius [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Improve [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] by using: [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### updated Van-der-Waals radius values provided by Los Alamos National Laboratory&lt;br /&gt;
### updated Covalent radius values provided by Cambridge Structural Database&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Extract unique protein Chains ===&lt;br /&gt;
# Input:  A Polydata of the protein&lt;br /&gt;
# Output: Unique protein chains without het-atoms and Symmetric Information&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a filter that removes the het-atoms and creates the polydata of the protein chains. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Detect the unique protein chains using Symmetry detection techniques ([https://en.wikipedia.org/wiki/Kabsch_algorithm Kabsch algorithm]) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Store the Symmetry information (rotation and translation). [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: This way we can mesh each unique chain individually&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Sort Atoms By Radius ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms&lt;br /&gt;
# Output: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using vtkSortFieldData we sort the non-Het atoms by radius in descending order. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed using vtkSMPTools [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Αngelos) Compute the Solvent Excluded Image ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order, probe radius, spacing&lt;br /&gt;
# Output: Solvent Excluded Image of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros) Calculate the optimal bounding box of the protein chain using CGAL&#039;s implementation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Angelos) Create the Solvent Accessible image by creating spheres for each atom that their radius is: Van der Waals radius + probe radius. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos) Perform Euclidean Distance Transform on the Solvent Accessible image using the &#039;&#039;&#039;itk::SignedMaurerDistanceMapImageFilter&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
## (Spiros) Extract Solvent Excluded image from the EDT result by setting: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### All pixel values &amp;lt; probe-radius - truncationError[atomType] - paddingDistance = 0&lt;br /&gt;
### All pixel values &amp;gt;= probe-radius - truncationError[atomType] - paddingDistance = 1&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros) Handle the calculation of truncationError[atomType] in a thread-safe way by sorting the atoms by radius in descending order [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Truncation error is caused because of the spacing of the image.&lt;br /&gt;
## (Spiros/Angelos) Select a paddingDistance value to help PODM3D produce an accurate surface [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Close holes that should not exist using the distance of the pixel point vs the actual atom [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Create smaller images using the concept that is described in the EDTSurf paper [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Compute the Solvent Excluded Surface (&#039;&#039;&#039;SES&#039;&#039;&#039;)===&lt;br /&gt;
# Input: Solvent Excluded Image of a chain&lt;br /&gt;
# Output: Solvent Excluded Surface of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, produce a volumetric mesh of the image. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, extract the volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;vtkDataSetSurfaceFilter&#039;&#039;&#039;, extract the surface of volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039; this filter is used because when PODM is extracting the surface, its triangles are oriented the wrong way.&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Advantages:&lt;br /&gt;
## Can control the number of elements on the surface&lt;br /&gt;
## the edge lengths bounds are relatively small which helps in the clustering.&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Select a default delta value. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fix volume grading crashing. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Surface needs to be smoothed. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Extract Atom Types of surface points ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain surface and a Polydata of the unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Output: Atom Types of surface points of the unique protein chain surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using a KD-tree, for each surface point, find the closest atom: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If the surface point is within the radius of the closest atom, assign the atom type of the closest point to the surface point&lt;br /&gt;
### Else, assign &#039;&#039;&#039;0&#039;&#039;&#039;, which means the surface point is part of the re-entrance surface.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Find an ideal offset distance value between the surface points and their closest atoms to improve accuracy. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Generate the Symmetric Protein chain surfaces ===&lt;br /&gt;
# Input: A vector of the unique protein chain surfaces and the Symmetry information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;SymmetricProteinChainsSurface&#039;&#039;&#039; filter that generates the non unique protein chain surfaces using the Symmetry information. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Assign Model and Chain arrays on SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces &amp;amp; model and chains information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;AssignModelAndChain&#039;&#039;&#039; filter that assigns the model and chain arrays for each protein chain surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Merge Protein Chain SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Output: Solvent Excluded Surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;MergeSurfaces&#039;&#039;&#039; filter that merges all the protein-chains surfaces into one and forms the solvent excluded surface of the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Compute ambient occlusion of the SES === &lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Ambient Occlusion values of surface points, normals of surface points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos/Spiros) Using IGL Library, which uses [https://www.embree.org/ Embree] and [https://eigen.tuxfamily.org/dox/ Eigen], calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Using the CUDA and Optix library, calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: GPU parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros/Angelos) Eliminate the noise that is created due to the non-smoothed &#039;&#039;&#039;PODM3D&#039;&#039;&#039; surface by assigning for each vertex the average ambient occlusion value of its neighbors + itself. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Use the symmetry information to minimize the memory footprint for CPU and GPU [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Compute Surface Statistics ===&lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Statistics of Surface Triangles&#039; Edges&lt;br /&gt;
# Algoritmic step:&lt;br /&gt;
## Compute min/mean/median/max edge lengths of the surface triangles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Cavity Detection ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Ambient Occlusion values of surface points, Surface Statistics&lt;br /&gt;
# Output: Protein Cavities&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a modified version of the clustering method &#039;&#039;&#039;DBSCAN&#039;&#039;&#039;, that finds neighbors based on their density &#039;&#039;&#039;and&#039;&#039;&#039; ambient occlusion values, form clusters that define protein cavities. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Idea 1: [https://link.springer.com/article/10.1023/A:1009884809343 A Fast Parallel Clustering Algorithm for Large Spatial Databases PDBSCAN]&lt;br /&gt;
#### Idea 2: Speculative Execution using &#039;&#039;&#039;PREMA&#039;&#039;&#039;&lt;br /&gt;
## (Angelos) Implement a rendering framework to visualize the clustering process using &#039;&#039;&#039;VTK&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Tune the clustering parameters:&lt;br /&gt;
### (Spiros) Search-radius = 2 * minEdgeLength of the surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Esp = 5. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros/Angelos) Min cavity size = cavityFactor * delta^-2.178. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Default value of cavityFactor = 10.&lt;br /&gt;
## Limit the expansion of the cavity by using: &lt;br /&gt;
### (Spiros) A relative threshold for the difference an occlusion value from the average occlusion value of the cluster. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Define weights for the occlusion values, and convert the mean to a weighted mean. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Define occlusion values bounds to detect different types of cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## [https://dl.acm.org/doi/abs/10.1145/304181.304187 OPTICS: ordering points to identify the clustering structure] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Use symmetry information to quickly detect the per-model cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Angelos) Map Electrostatics Potentials on Surface Points ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Electrostatic Potentials Image &#039;&#039;&#039;ESP&#039;&#039;&#039; of [http://www.poissonboltzmann.org/ APBS], normals of surface points, probe radius, lowerThreshold-upperThreshold&lt;br /&gt;
# Output: Electrostatic values of surface points&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros/Angelos) For each surface point: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Scale the point using normals, and probe radius to the solvent-accessible surface, &lt;br /&gt;
### Get the value of the closest pixel from the &#039;&#039;&#039;ESP&#039;&#039;&#039; to the scaled point:&lt;br /&gt;
#### If value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
#### Else if, value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
#### Else get the interpolated value of the scaled points from the image:&lt;br /&gt;
##### If interpolated value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
##### Else if, interpolated value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos/Spiros) Create reader of the [https://www.ics.uci.edu/~dock/manuals/apbs/html/user-guide/x2674.html OpenDx] file format that is used as output by APBS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Select Clustered cavity points ===&lt;br /&gt;
# Input: Labeled Solvent Surface Surface&lt;br /&gt;
# Output: Labeled clustered cavity points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a SelectPoints filter. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Select only the points that are clustered at the cavity detection step. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: this is done to improve the speed of writing the output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Write Results:  ===&lt;br /&gt;
# Input: Labeled clustered cavity points or Labeled Solvent Surface Surface&lt;br /&gt;
# Output: solventSurface.vtp&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a vtkXMLPolyDataWriter, write the output file. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Create a writer, just for the cavities to minimize the IO. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Idea: See &#039;&#039;&#039;Fpocket&#039;&#039;&#039;.&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Note: a Paraview plugin may be developed for visualization purposes. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Classify cavity type ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Atomic Cavities, Atom Types of surface points&lt;br /&gt;
# Output: Labeled atomic Cavities&lt;br /&gt;
# Algorithm steps:&lt;br /&gt;
# Ideas that might be used: &lt;br /&gt;
## Ambient occlusion values based classification using mean distance cluster value [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Analyze the shape of clusters to identify what type of cavity they are. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### This can potentially be done using machine learning.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== GPCD vs MOLE ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| GPCD&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| MOLE&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Surface Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Interior Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Visualize Exact Channel Shape&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Very Large Molecules&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO (very slow)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Multi-Model Files&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Parallelization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Relative Performance&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | VERY FAST&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | SLOW&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Intuitive Visualization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| False Positives&lt;br /&gt;
| style=&amp;quot;background-color: orange; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Quantify Major Structural Features&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rbvi.ucsf.edu/chimerax/ UCSF ChimeraX]&#039;&#039;&#039;: Next-generation molecular visualization program from the Resource for Biocomputing, Visualization, and Informatics (RBVI).&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/vmd/ VMD]&#039;&#039;&#039;: Molecular visualization program for displaying, animating, and analyzing large biomolecular systems using 3D graphics and built-in scripting. Used in conjunction with NAMD for visualizing molecular dynamics simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/namd/ NAMD]&#039;&#039;&#039;: Parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. Scales to hundreds of cores for typical simulations and beyond 500,000 cores for the largest simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/Platform/App/Mole MOLE]&#039;&#039;&#039;: Universal toolkit for rapid location and characterization of channels and pores in biomacromolecules.&lt;br /&gt;
* &#039;&#039;&#039;[https://caver.cz/ CAVER]&#039;&#039;&#039;: Software tool for the analysis and visualization of tunnels and channels in protein structures.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/ RCSB PDB Protein Data Bank]&#039;&#039;&#039;: The largest and most popular database of protein structures.&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5839519/ Survey: Geometric Protein Cavity Detection Algorithms]&#039;&#039;&#039;: Paper surveying the current geometric algorithms for protein cavity detection. This is a great resource for understanding this project.&lt;br /&gt;
* &#039;&#039;&#039;[https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-39 MOLE 2.0]&#039;&#039;&#039;: Paper describing the MOLE 2.0 protein cavity detection software. Contains a good algorithm that can be used for extracting a good approximation of the surface of a point cloud of atoms.&lt;br /&gt;
* &#039;&#039;&#039;[https://reader.elsevier.com/reader/sd/pii/S0969212607003759?token=4D0F6192E971D4406E8F7CBA047B0490C8715EBD67579D26427E0E63BD0298BEBF948DB238A28E4EAE2D17EBC6DF4E50 MOLE 1.0]&#039;&#039;&#039;: Paper describing the MOLE 1.0 algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/epdf/10.1002/prot.22052 MolAxis]&#039;&#039;&#039;: Paper describing the MolAxis protein cavity detection software.&lt;br /&gt;
* &#039;&#039;&#039;[https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002708 CAVER 3.0]&#039;&#039;&#039;: Paper describing the CAVER 3.0 protein cavity detection software. This algorithm specializes in identifying tunnels.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.sciencedirect.com/science/article/abs/pii/S0022283606008746 Travel Depth]&#039;&#039;&#039;: Paper describing the &amp;quot;travel depth&amp;quot; algorithm for protein cavity visualization.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/full/10.1111/cgf.12120 GPU Protein Cavity Detection using Ambient Occlusion]&#039;&#039;&#039;: Paper describing a GPU-based protein cavity detection algorithm that utilizes Ambient Occlusion.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf DBSCAN]&#039;&#039;&#039;: Paper describing the DBSCAN clustering algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://link.springer.com/article/10.1023/A:1009884809343 PDBSCAN]&#039;&#039;&#039;: Paper describing a parallel version of DBSCAN.&lt;br /&gt;
* &#039;&#039;&#039;[https://pubmed.ncbi.nlm.nih.gov/31133031/ Coronavirus envelope protein]&#039;&#039;&#039;: Paper describing research on the envelope protein of coronaviruses.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.cell.com/biophysj/fulltext/S0006-3495(20)33168-4 COVID-19 virion model]&#039;&#039;&#039;: Paper describing a detail model of the SARS-CoV-2 virus particle.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7685317/pdf/nihpp-2020.11.19.390187.pdf COVID-19 simulation]&#039;&#039;&#039;: Paper describing large-scale COVID-19 simulations.&lt;br /&gt;
&lt;br /&gt;
=== Organizations/Groups ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/ University of Illinois at Urbana-Champaign: Theoretical and Computational Biophysics Group]&#039;&#039;&#039;: Perhaps the most important group in molecular dynamics. Developers of VMD and NAMD. Ran the simulation for the 200 million atom model of COVID-19.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/ Oak Ridge National Laboratory (ORNL)]&#039;&#039;&#039;: Major national lab with active involvement in drug discovery and design using supercomputers.&lt;br /&gt;
* &#039;&#039;&#039;[http://rbvi.ucsf.edu/ Resource for Biocomputing, Visualization, and Informatics (RBVI)]&#039;&#039;&#039;: Developers of UCSF Chimera and UCSF ChimeraX.&lt;br /&gt;
* &#039;&#039;&#039;[https://ist.ac.at/en/research/edelsbrunner-group/ IST Austria: Edelsbrunner Group]&#039;&#039;&#039;: Important group in algorithms, computational geometry, and computational topology. Involved with protein cavity detection in the past and potentially involved now. The head of the group, Edelsbrunner created alpha shapes.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tacc.utexas.edu/systems/frontera Texas Advanced Computing Center]&#039;&#039;&#039;: Maintainers of the Frontera supercomputer, the fifth fastest supercomputer in the world (2020). The simulation for the 200 million atom model of COVID-19 was executed on this supercomputer.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/ WebChemistry]&#039;&#039;&#039;: Developed MOLE and many other software tools related to molecular analysis.&lt;br /&gt;
&lt;br /&gt;
=== Important Links ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.hpcwire.com/off-the-wire/coronavirus-massive-simulations-completed-on-frontera-supercomputer/ COVID-19 200 million atom NAMD simulation]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/news/early-research-existing-drug-compounds-supercomputing-could-combat-coronavirus/ ORNL COVID-19 spike drug identification]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Proteins ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/1jj2 Large Ribosomal Subunit (98,693 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VXX COVID-19 Spike Glycoprotein, Closed State (23,694 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6Y2E COVID-19 Main Protease (5,370 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VWW COVID-19 NSP15 Endoribonuclease (24,036 atoms)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] Simões, T., Lopes, D., Dias, S., Fernandes, F., Pereira, J., Jorge, J., Bajaj, C., &amp;amp; Gomes, A. (2017). Geometric Detection Algorithms for Cavities on Protein Surfaces in Molecular Graphics: A Survey. Computer graphics forum : journal of the European Association for Computer Graphics, 36(8), 643–683. https://doi.org/10.1111/cgf.13158&lt;br /&gt;
&lt;br /&gt;
[2] Yaffe, Fishelovitch, Wolfson, Halperin, &amp;amp; Nussinov. (2008). MolAxis: Efficient and accurate identification of channels in macromolecules. Proteins: Structure, Function, and Bioinformatics, 73(1), 72-86.&lt;br /&gt;
&lt;br /&gt;
[3] Coleman, R. G., &amp;amp; Sharp, K. A. (2006). Travel depth, a new shape descriptor for macromolecules: application to ligand binding. Journal of molecular biology, 362(3), 441–458. https://doi.org/10.1016/j.jmb.2006.07.022&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8455</id>
		<title>Internal:GPCD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8455"/>
		<updated>2021-04-19T15:11:27Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* (Spiros/Αngelos) Compute the Solvent Excluded Image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavities ===&lt;br /&gt;
Cavities are structural features of proteins and they are often important for drug discovery and design. There are different kinds of cavities, including pockets, voids, tunnels, and channels. The types of cavities are listed in more detail in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityTypes.jpg|center|frame| Figure 1: The basic types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Void&#039;&#039;&#039;: A cavity that looks like internal &amp;quot;hole&amp;quot; in a protein with no connection to the surface.&lt;br /&gt;
# &#039;&#039;&#039;Cleft&#039;&#039;&#039;: A pocket that looks like a &amp;quot;dent&amp;quot; in the surface of a protein. Can also be found as part of a tunnel or channel.&lt;br /&gt;
# &#039;&#039;&#039;Invagination&#039;&#039;&#039;: A pocket that looks like a &amp;quot;cove&amp;quot;. It has a small opening on the surface of a protein and leads to a larger interior. Can also be found as part of a tunnel or after a cleft.&lt;br /&gt;
# &#039;&#039;&#039;Tunnel&#039;&#039;&#039;: A pocket that has an opening on the surface of a protein and leads to somewhere in the interior. Has no opening on the other side.&lt;br /&gt;
# &#039;&#039;&#039;Channel&#039;&#039;&#039;: A cavity that has an opening on one side of the surface of a protein and leads to another opening in another location on the surface of the protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course, the types of cavities listed in figure 1 are only the basic ones. Combinations of these are also possible as shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityAdvancedTypes.jpg|center|frame| Figure 2: Combination types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavity Detection Methods ===&lt;br /&gt;
There are several methods for detecting protein cavities. There are sphere based methods, grid based methods, grid-and-sphere based methods, surface based methods, grid-and-surface based methods, time-varying methods, GPU based methods, consensus based methods, and finally tessellation based methods. These algorithms are shown in more detail in figure 3. Tessellation based methods mainly rely on Voronoi tessellation. Some methods rely on weighted Voronoi tessellation because of its ability to more accurately represent the volume of atoms. The Voronoi tessellation in these methods is computed from a set of points representing the atomic centers of the underlying protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityDetectionAlgorithms.jpg|center|frame| Figure 3: A hierarchy of protein cavity detection algorithms [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literature Review ==&lt;br /&gt;
&lt;br /&gt;
=== MOLE ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MOLE algorithm is specifically designed to identify tunnels and channels. Finding superficial cavities is a secondary concern and does so as part of the surface approximation step. MOLE utilizes the surface obtained by the refinement of the convex hull to find superficial cavities such as clefts and invaginations. In essence, the approximation of a more accurate surface and the detection of these superficial cavities are closely related. As tetrahedra are removed from the convex hull to get a more accurate surface approximation, a parameter called &#039;&#039;interior threshold&#039;&#039; controls how many superficial cavities are found. For example, if the number of tetrahedra removed from a specific part of the molecule exceeds this threshold, the algorithm marks these tetrahedra as part of a superficial cavity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:moleVoronoiTunnelPath.jpg|center|frame| Figure 4: Shows in 2D the Voronoi diagram (thin lines) and the convex hull (dotted line) of molecule represented by atoms (circles). Each Voronoi edge is evaluated by the cost function (numbers). The thick line represents the optimal path found by the Dijkstra&#039;s algorithm from the given starting point (black circle), i.e., centerline of found tunnel. [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the more complicated types of cavities, tunnels and channels, MOLE uses the Voronoi diagram to identify them. Start and end points are defined as the centers of the deepest tetrahedra in each cavity. The depth of the tetrahedron is defined as the number of Voronoi edges from the closest boundary tetrahedron (on the surface). Tunnels/channels are computed as the shortest paths between all pairs of start and end points in the same cavity diagram.&lt;br /&gt;
&lt;br /&gt;
[[File:MoleDijkstraWeightFunction.png|center|frame| Figure 5: Shows the weight function used to estimate the weight of each Voronoi edge for Dijkstra&#039;s algorihtm. l(e) is the length of the edge, d(e) is the distance of the edge to the closest atom Van der Waals sphere and ϵ is a small number to avoid division by zero [1]]]&lt;br /&gt;
&lt;br /&gt;
==== Complexity ====&lt;br /&gt;
* Worst-case: O(N^2 log N), where N is the number of atoms in the molecule. &lt;br /&gt;
* Average: O(M log M), where M is the number of vertices in the Voronoi diagram (in the worst case, M = N^2, but in most cases M = O(N)). As a result of the use of the incremental algorithm and Hilbert curve ordering, the complexity of calculating the Delaunay triangulation of most molecular structures is O(N log N). Finally, the complexity of all the remaining steps of the algorithm is at most O(M log M).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MolAxis ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MolAxis algorithm relies on Voronoi and Dijkstra&#039;s algorithm to find channels, similarly to MOLE. The algorithm consists of the following high-level steps:&lt;br /&gt;
&lt;br /&gt;
# Approximate the molecule using a collection of &#039;&#039;&#039;fixed-size spheres&#039;&#039;&#039;. The number of balls needed depends on the required quality of the approximation. In the extreme case, where the user is interested in a high resolution, each atom is approximated using a single sphere. &lt;br /&gt;
# Compute the &#039;&#039;&#039;Voronoi diagram&#039;&#039;&#039; of the centers of the fixed-sized spheres. The diagram is intersected with a user-defined bounding sphere. This defines the area of interest.&lt;br /&gt;
# Discard the parts of the Voronoi diagram that intersect the molecule.&lt;br /&gt;
# Define a &#039;&#039;&#039;graph&#039;&#039;&#039;, using the Voronoi vertices and edges. A weight is given to each edge, which depends on its length and on its distance from the surface of the molecule. &lt;br /&gt;
# Define a &#039;&#039;&#039;source point (root vertex)&#039;&#039;&#039;. The user can either supply a source point or allow MolAxis to automatically choose the source point to be the &#039;&#039;&#039;center of the largest cavity in the molecule&#039;&#039;&#039; (basically detect channels inside-out).&lt;br /&gt;
# Apply a shortest path optimization algorithm (&#039;&#039;&#039;Dijktra&#039;s algorithm&#039;&#039;&#039;) on the graph, computing a tree called the &amp;quot;corridor tree&amp;quot;.&lt;br /&gt;
# The desired channels are paths in the corridor tree. Duplicate channels are avoided by using the split distance parameter. The split distance bounds the distance to the least common ancestor of the channel and all previously reported channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MolAxisVoronoi.png|center|frame| Figure 6: Shows an example of fixed-size circles (light-blue) approximating varying-size circles and the pathway diagram of their centers. The discarded portion of the Voronoi diagram of their centers is depicted using dotted lines [2]. This figure also helps illustrate the usefulness of the Voronoi tessellation in computing pathways.]]&lt;br /&gt;
&lt;br /&gt;
== Protein Energetics ==&lt;br /&gt;
=== Metrics ===&lt;br /&gt;
# &#039;&#039;&#039;Hydrophobicity&#039;&#039;&#039;: Physical property of a molecule that is seemingly repelled from a mass of water. Hydrophilic molecules are attracted to water. Hydrophobicity plays a major role in protein folding. Hydrophobic molecules also tend to be nonpolar and prefer other neutral molecules and nonpolar solvents. Hydrophobicity is the most widely used metric.&lt;br /&gt;
# &#039;&#039;&#039;Hydrogen Bonds&#039;&#039;&#039;: Weak bonds between two molecules resulting from an electrostatic attraction between a proton in one molecule and an electronegative atom in the other. We often see these bonds between oxygen and hydrogen.&lt;br /&gt;
# &#039;&#039;&#039;Van der Waals Interactions&#039;&#039;&#039;: Also known as Van der Waals forces, they are forces driven by induced electrical interactions between two or more atoms or molecules that are very close to each other. Van der Waals interaction is the weakest of all intermolecular attractions between molecules. These forces are distance-dependent.&lt;br /&gt;
# &#039;&#039;&#039;Salt Bridges&#039;&#039;&#039;: Non-covalent (no sharing of eletrons; electromagnetic) interaction between two ionized sites. It has two components: a hydrogen bond and an electrostatic interaction.&lt;br /&gt;
# &#039;&#039;&#039;Disulfide Bridges&#039;&#039;&#039;: Strong bonds that can form between two cysteines (an amino acid). The strength of disulfide bridges helps stabilize a protein. Disulfide bridges are especially common in proteins that are secreted from cells.&lt;br /&gt;
# &#039;&#039;&#039;Charge&#039;&#039;&#039;: Plays a role in strength of bonds. A higher charge means that an atom will have stronger forces in an electromagnetic field.&lt;br /&gt;
# &#039;&#039;&#039;Polarity&#039;&#039;&#039;: Separation of electric charge leading to a molecule or its chemical groups having an electric dipole moment, with a negatively charged end and a positively charged end. Indicates the existence of polar bonds, which are covalent (sharing of electrons) and are quite strong. About [https://chem.libretexts.org/Bookshelves/Inorganic_Chemistry/Book%3A_Introduction_to_Inorganic_Chemistry/01%3A_Review_of_Chemical_Bonding/1.04%3A_Bond_Polarity_and_Bond_Strength bond polarity].&lt;br /&gt;
&lt;br /&gt;
== Candidate Method: Geometric Protein Cavities Detection (&#039;&#039;&#039;GPCD&#039;&#039;&#039;) ==&lt;br /&gt;
The Pipeline contains the following high-level algorithmic steps:&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Read protein ===&lt;br /&gt;
# Input: PDB file&lt;br /&gt;
# Output: A Polydata of the protein&lt;br /&gt;
# Algorithmic Step:&lt;br /&gt;
## (Angelos) Using vtkPDBReader, read the PDB file that included the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos) Upgrade vtkPDBReader to be able to manage multimodel proteins [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Fix vtkPDBReader error of setting wrong atom numbers [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Set up vtkPDBReader to utilize [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] for the Covalent radius and Van-der-Waals radius [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Improve [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] by using: [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### updated Van-der-Waals radius values provided by Los Alamos National Laboratory&lt;br /&gt;
### updated Covalent radius values provided by Cambridge Structural Database&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Extract unique protein Chains ===&lt;br /&gt;
# Input:  A Polydata of the protein&lt;br /&gt;
# Output: Unique protein chains without het-atoms and Symmetric Information&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a filter that removes the het-atoms and creates the polydata of the protein chains. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Detect the unique protein chains using Symmetry detection techniques ([https://en.wikipedia.org/wiki/Kabsch_algorithm Kabsch algorithm]) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Store the Symmetry information (rotation and translation). [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: This way we can mesh each unique chain individually&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Sort Atoms By Radius ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms&lt;br /&gt;
# Output: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using vtkSortFieldData we sort the non-Het atoms by radius in descending order. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed using vtkSMPTools [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Αngelos) Compute the Solvent Excluded Image ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order, probe radius, spacing&lt;br /&gt;
# Output: Solvent Excluded Image of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros) Calculate the optimal bounding box of the protein chain using CGAL&#039;s implementation [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Angelos) Create the Solvent Accessible image by creating spheres for each atom that their radius is: Van der Waals radius + probe radius. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos) Perform Euclidean Distance Transform on the Solvent Accessible image using the &#039;&#039;&#039;itk::SignedMaurerDistanceMapImageFilter&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
## (Spiros) Extract Solvent Excluded image from the EDT result by setting: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### All pixel values &amp;lt; probe-radius - truncationError[atomType] - paddingDistance = 0&lt;br /&gt;
### All pixel values &amp;gt;= probe-radius - truncationError[atomType] - paddingDistance = 1&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros) Handle the calculation of truncationError[atomType] in a thread-safe way by sorting the atoms by radius in descending order [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Truncation error is caused because of the spacing of the image.&lt;br /&gt;
## (Spiros/Angelos) Select a paddingDistance value to help PODM3D produce an accurate surface [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Close holes that should not exist using the distance of the pixel point vs the actual atom [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Create smaller images using the concept that is described in the EDTSurf paper [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Compute the Solvent Excluded Surface (&#039;&#039;&#039;SES&#039;&#039;&#039;)===&lt;br /&gt;
# Input: Solvent Excluded Image of a chain&lt;br /&gt;
# Output: Solvent Excluded Surface of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, produce a volumetric mesh of the image. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, extract the volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;vtkDataSetSurfaceFilter&#039;&#039;&#039;, extract the surface of volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039; this filter is used because when PODM is extracting the surface, its triangles are oriented the wrong way.&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Advantages:&lt;br /&gt;
## Can control the number of elements on the surface&lt;br /&gt;
## the edge lengths bounds are relatively small which helps in the clustering.&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Select a default delta value. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fix volume grading crashing. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Surface needs to be smoothed. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Extract Atom Types of surface points ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain surface and a Polydata of the unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Output: Atom Types of surface points of the unique protein chain surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using a KD-tree, for each surface point, find the closest atom: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If the surface point is within the radius of the closest atom, assign the atom type of the closest point to the surface point&lt;br /&gt;
### Else, assign &#039;&#039;&#039;0&#039;&#039;&#039;, which means the surface point is part of the re-entrance surface.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Find an ideal offset distance value between the surface points and their closest atoms to improve accuracy. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Generate the Symmetric Protein chain surfaces ===&lt;br /&gt;
# Input: A vector of the unique protein chain surfaces and the Symmetry information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;SymmetricProteinChainsSurface&#039;&#039;&#039; filter that generates the non unique protein chain surfaces using the Symmetry information. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Assign Model and Chain arrays on SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces &amp;amp; model and chains information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;AssignModelAndChain&#039;&#039;&#039; filter that assigns the model and chain arrays for each protein chain surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Merge Protein Chain SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Output: Solvent Excluded Surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;MergeSurfaces&#039;&#039;&#039; filter that merges all the protein-chains surfaces into one and forms the solvent excluded surface of the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Compute ambient occlusion of the SES === &lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Ambient Occlusion values of surface points, normals of surface points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos/Spiros) Using IGL Library, which uses [https://www.embree.org/ Embree] and [https://eigen.tuxfamily.org/dox/ Eigen], calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Using the CUDA and Optix library, calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: GPU parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros/Angelos) Eliminate the noise that is created due to the non-smoothed &#039;&#039;&#039;PODM3D&#039;&#039;&#039; surface by assigning for each vertex the average ambient occlusion value of its neighbors + itself. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Use the symmetry information to minimize the memory footprint for CPU and GPU [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Compute Surface Statistics ===&lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Statistics of Surface Triangles&#039; Edges&lt;br /&gt;
# Algoritmic step:&lt;br /&gt;
## Compute min/mean/median/max edge lengths of the surface triangles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Cavity Detection ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Ambient Occlusion values of surface points, Surface Statistics&lt;br /&gt;
# Output: Protein Cavities&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a modified version of the clustering method &#039;&#039;&#039;DBSCAN&#039;&#039;&#039;, that finds neighbors based on their density &#039;&#039;&#039;and&#039;&#039;&#039; ambient occlusion values, form clusters that define protein cavities. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Idea 1: [https://link.springer.com/article/10.1023/A:1009884809343 A Fast Parallel Clustering Algorithm for Large Spatial Databases PDBSCAN]&lt;br /&gt;
#### Idea 2: Speculative Execution using &#039;&#039;&#039;PREMA&#039;&#039;&#039;&lt;br /&gt;
## (Angelos) Implement a rendering framework to visualize the clustering process using &#039;&#039;&#039;VTK&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Tune the clustering parameters:&lt;br /&gt;
### (Spiros) Search-radius = maxEdgeLength of the surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Esp = 5. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros/Angelos) Min cavity size = cavityFactor * delta^-2.178. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Default value of cavityFactor = 10.&lt;br /&gt;
## Limit the expansion of the cavity by using: &lt;br /&gt;
### (Spiros) A relative threshold for the difference an occlusion value from the average occlusion value of the cluster. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Define weights for the occlusion values, and convert the mean to a weighted mean. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Define occlusion values bounds to detect different types of cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## [https://dl.acm.org/doi/abs/10.1145/304181.304187 OPTICS: ordering points to identify the clustering structure] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Use symmetry information to quickly detect the per-model cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Angelos) Map Electrostatics Potentials on Surface Points ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Electrostatic Potentials Image &#039;&#039;&#039;ESP&#039;&#039;&#039; of [http://www.poissonboltzmann.org/ APBS], normals of surface points, probe radius, lowerThreshold-upperThreshold&lt;br /&gt;
# Output: Electrostatic values of surface points&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros/Angelos) For each surface point: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Scale the point using normals, and probe radius to the solvent-accessible surface, &lt;br /&gt;
### Get the value of the closest pixel from the &#039;&#039;&#039;ESP&#039;&#039;&#039; to the scaled point:&lt;br /&gt;
#### If value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
#### Else if, value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
#### Else get the interpolated value of the scaled points from the image:&lt;br /&gt;
##### If interpolated value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
##### Else if, interpolated value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos/Spiros) Create reader of the [https://www.ics.uci.edu/~dock/manuals/apbs/html/user-guide/x2674.html OpenDx] file format that is used as output by APBS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Select Clustered cavity points ===&lt;br /&gt;
# Input: Labeled Solvent Surface Surface&lt;br /&gt;
# Output: Labeled clustered cavity points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a SelectPoints filter. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Select only the points that are clustered at the cavity detection step. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: this is done to improve the speed of writing the output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Write Results:  ===&lt;br /&gt;
# Input: Labeled clustered cavity points or Labeled Solvent Surface Surface&lt;br /&gt;
# Output: solventSurface.vtp&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a vtkXMLPolyDataWriter, write the output file. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Create a writer, just for the cavities to minimize the IO. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Idea: See &#039;&#039;&#039;Fpocket&#039;&#039;&#039;.&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Note: a Paraview plugin may be developed for visualization purposes. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Classify cavity type ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Atomic Cavities, Atom Types of surface points&lt;br /&gt;
# Output: Labeled atomic Cavities&lt;br /&gt;
# Algorithm steps:&lt;br /&gt;
# Ideas that might be used: &lt;br /&gt;
## Ambient occlusion values based classification using mean distance cluster value [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Analyze the shape of clusters to identify what type of cavity they are. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### This can potentially be done using machine learning.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== GPCD vs MOLE ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| GPCD&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| MOLE&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Surface Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Interior Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Visualize Exact Channel Shape&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Very Large Molecules&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO (very slow)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Multi-Model Files&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Parallelization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Relative Performance&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | VERY FAST&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | SLOW&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Intuitive Visualization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| False Positives&lt;br /&gt;
| style=&amp;quot;background-color: orange; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Quantify Major Structural Features&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rbvi.ucsf.edu/chimerax/ UCSF ChimeraX]&#039;&#039;&#039;: Next-generation molecular visualization program from the Resource for Biocomputing, Visualization, and Informatics (RBVI).&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/vmd/ VMD]&#039;&#039;&#039;: Molecular visualization program for displaying, animating, and analyzing large biomolecular systems using 3D graphics and built-in scripting. Used in conjunction with NAMD for visualizing molecular dynamics simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/namd/ NAMD]&#039;&#039;&#039;: Parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. Scales to hundreds of cores for typical simulations and beyond 500,000 cores for the largest simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/Platform/App/Mole MOLE]&#039;&#039;&#039;: Universal toolkit for rapid location and characterization of channels and pores in biomacromolecules.&lt;br /&gt;
* &#039;&#039;&#039;[https://caver.cz/ CAVER]&#039;&#039;&#039;: Software tool for the analysis and visualization of tunnels and channels in protein structures.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/ RCSB PDB Protein Data Bank]&#039;&#039;&#039;: The largest and most popular database of protein structures.&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5839519/ Survey: Geometric Protein Cavity Detection Algorithms]&#039;&#039;&#039;: Paper surveying the current geometric algorithms for protein cavity detection. This is a great resource for understanding this project.&lt;br /&gt;
* &#039;&#039;&#039;[https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-39 MOLE 2.0]&#039;&#039;&#039;: Paper describing the MOLE 2.0 protein cavity detection software. Contains a good algorithm that can be used for extracting a good approximation of the surface of a point cloud of atoms.&lt;br /&gt;
* &#039;&#039;&#039;[https://reader.elsevier.com/reader/sd/pii/S0969212607003759?token=4D0F6192E971D4406E8F7CBA047B0490C8715EBD67579D26427E0E63BD0298BEBF948DB238A28E4EAE2D17EBC6DF4E50 MOLE 1.0]&#039;&#039;&#039;: Paper describing the MOLE 1.0 algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/epdf/10.1002/prot.22052 MolAxis]&#039;&#039;&#039;: Paper describing the MolAxis protein cavity detection software.&lt;br /&gt;
* &#039;&#039;&#039;[https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002708 CAVER 3.0]&#039;&#039;&#039;: Paper describing the CAVER 3.0 protein cavity detection software. This algorithm specializes in identifying tunnels.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.sciencedirect.com/science/article/abs/pii/S0022283606008746 Travel Depth]&#039;&#039;&#039;: Paper describing the &amp;quot;travel depth&amp;quot; algorithm for protein cavity visualization.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/full/10.1111/cgf.12120 GPU Protein Cavity Detection using Ambient Occlusion]&#039;&#039;&#039;: Paper describing a GPU-based protein cavity detection algorithm that utilizes Ambient Occlusion.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf DBSCAN]&#039;&#039;&#039;: Paper describing the DBSCAN clustering algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://link.springer.com/article/10.1023/A:1009884809343 PDBSCAN]&#039;&#039;&#039;: Paper describing a parallel version of DBSCAN.&lt;br /&gt;
* &#039;&#039;&#039;[https://pubmed.ncbi.nlm.nih.gov/31133031/ Coronavirus envelope protein]&#039;&#039;&#039;: Paper describing research on the envelope protein of coronaviruses.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.cell.com/biophysj/fulltext/S0006-3495(20)33168-4 COVID-19 virion model]&#039;&#039;&#039;: Paper describing a detail model of the SARS-CoV-2 virus particle.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7685317/pdf/nihpp-2020.11.19.390187.pdf COVID-19 simulation]&#039;&#039;&#039;: Paper describing large-scale COVID-19 simulations.&lt;br /&gt;
&lt;br /&gt;
=== Organizations/Groups ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/ University of Illinois at Urbana-Champaign: Theoretical and Computational Biophysics Group]&#039;&#039;&#039;: Perhaps the most important group in molecular dynamics. Developers of VMD and NAMD. Ran the simulation for the 200 million atom model of COVID-19.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/ Oak Ridge National Laboratory (ORNL)]&#039;&#039;&#039;: Major national lab with active involvement in drug discovery and design using supercomputers.&lt;br /&gt;
* &#039;&#039;&#039;[http://rbvi.ucsf.edu/ Resource for Biocomputing, Visualization, and Informatics (RBVI)]&#039;&#039;&#039;: Developers of UCSF Chimera and UCSF ChimeraX.&lt;br /&gt;
* &#039;&#039;&#039;[https://ist.ac.at/en/research/edelsbrunner-group/ IST Austria: Edelsbrunner Group]&#039;&#039;&#039;: Important group in algorithms, computational geometry, and computational topology. Involved with protein cavity detection in the past and potentially involved now. The head of the group, Edelsbrunner created alpha shapes.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tacc.utexas.edu/systems/frontera Texas Advanced Computing Center]&#039;&#039;&#039;: Maintainers of the Frontera supercomputer, the fifth fastest supercomputer in the world (2020). The simulation for the 200 million atom model of COVID-19 was executed on this supercomputer.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/ WebChemistry]&#039;&#039;&#039;: Developed MOLE and many other software tools related to molecular analysis.&lt;br /&gt;
&lt;br /&gt;
=== Important Links ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.hpcwire.com/off-the-wire/coronavirus-massive-simulations-completed-on-frontera-supercomputer/ COVID-19 200 million atom NAMD simulation]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/news/early-research-existing-drug-compounds-supercomputing-could-combat-coronavirus/ ORNL COVID-19 spike drug identification]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Proteins ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/1jj2 Large Ribosomal Subunit (98,693 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VXX COVID-19 Spike Glycoprotein, Closed State (23,694 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6Y2E COVID-19 Main Protease (5,370 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VWW COVID-19 NSP15 Endoribonuclease (24,036 atoms)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] Simões, T., Lopes, D., Dias, S., Fernandes, F., Pereira, J., Jorge, J., Bajaj, C., &amp;amp; Gomes, A. (2017). Geometric Detection Algorithms for Cavities on Protein Surfaces in Molecular Graphics: A Survey. Computer graphics forum : journal of the European Association for Computer Graphics, 36(8), 643–683. https://doi.org/10.1111/cgf.13158&lt;br /&gt;
&lt;br /&gt;
[2] Yaffe, Fishelovitch, Wolfson, Halperin, &amp;amp; Nussinov. (2008). MolAxis: Efficient and accurate identification of channels in macromolecules. Proteins: Structure, Function, and Bioinformatics, 73(1), 72-86.&lt;br /&gt;
&lt;br /&gt;
[3] Coleman, R. G., &amp;amp; Sharp, K. A. (2006). Travel depth, a new shape descriptor for macromolecules: application to ligand binding. Journal of molecular biology, 362(3), 441–458. https://doi.org/10.1016/j.jmb.2006.07.022&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8454</id>
		<title>Internal:GPCD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8454"/>
		<updated>2021-04-19T15:11:17Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* (Spiros/Αngelos) Compute the Solvent Excluded Image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavities ===&lt;br /&gt;
Cavities are structural features of proteins and they are often important for drug discovery and design. There are different kinds of cavities, including pockets, voids, tunnels, and channels. The types of cavities are listed in more detail in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityTypes.jpg|center|frame| Figure 1: The basic types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Void&#039;&#039;&#039;: A cavity that looks like internal &amp;quot;hole&amp;quot; in a protein with no connection to the surface.&lt;br /&gt;
# &#039;&#039;&#039;Cleft&#039;&#039;&#039;: A pocket that looks like a &amp;quot;dent&amp;quot; in the surface of a protein. Can also be found as part of a tunnel or channel.&lt;br /&gt;
# &#039;&#039;&#039;Invagination&#039;&#039;&#039;: A pocket that looks like a &amp;quot;cove&amp;quot;. It has a small opening on the surface of a protein and leads to a larger interior. Can also be found as part of a tunnel or after a cleft.&lt;br /&gt;
# &#039;&#039;&#039;Tunnel&#039;&#039;&#039;: A pocket that has an opening on the surface of a protein and leads to somewhere in the interior. Has no opening on the other side.&lt;br /&gt;
# &#039;&#039;&#039;Channel&#039;&#039;&#039;: A cavity that has an opening on one side of the surface of a protein and leads to another opening in another location on the surface of the protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course, the types of cavities listed in figure 1 are only the basic ones. Combinations of these are also possible as shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityAdvancedTypes.jpg|center|frame| Figure 2: Combination types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavity Detection Methods ===&lt;br /&gt;
There are several methods for detecting protein cavities. There are sphere based methods, grid based methods, grid-and-sphere based methods, surface based methods, grid-and-surface based methods, time-varying methods, GPU based methods, consensus based methods, and finally tessellation based methods. These algorithms are shown in more detail in figure 3. Tessellation based methods mainly rely on Voronoi tessellation. Some methods rely on weighted Voronoi tessellation because of its ability to more accurately represent the volume of atoms. The Voronoi tessellation in these methods is computed from a set of points representing the atomic centers of the underlying protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityDetectionAlgorithms.jpg|center|frame| Figure 3: A hierarchy of protein cavity detection algorithms [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literature Review ==&lt;br /&gt;
&lt;br /&gt;
=== MOLE ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MOLE algorithm is specifically designed to identify tunnels and channels. Finding superficial cavities is a secondary concern and does so as part of the surface approximation step. MOLE utilizes the surface obtained by the refinement of the convex hull to find superficial cavities such as clefts and invaginations. In essence, the approximation of a more accurate surface and the detection of these superficial cavities are closely related. As tetrahedra are removed from the convex hull to get a more accurate surface approximation, a parameter called &#039;&#039;interior threshold&#039;&#039; controls how many superficial cavities are found. For example, if the number of tetrahedra removed from a specific part of the molecule exceeds this threshold, the algorithm marks these tetrahedra as part of a superficial cavity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:moleVoronoiTunnelPath.jpg|center|frame| Figure 4: Shows in 2D the Voronoi diagram (thin lines) and the convex hull (dotted line) of molecule represented by atoms (circles). Each Voronoi edge is evaluated by the cost function (numbers). The thick line represents the optimal path found by the Dijkstra&#039;s algorithm from the given starting point (black circle), i.e., centerline of found tunnel. [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the more complicated types of cavities, tunnels and channels, MOLE uses the Voronoi diagram to identify them. Start and end points are defined as the centers of the deepest tetrahedra in each cavity. The depth of the tetrahedron is defined as the number of Voronoi edges from the closest boundary tetrahedron (on the surface). Tunnels/channels are computed as the shortest paths between all pairs of start and end points in the same cavity diagram.&lt;br /&gt;
&lt;br /&gt;
[[File:MoleDijkstraWeightFunction.png|center|frame| Figure 5: Shows the weight function used to estimate the weight of each Voronoi edge for Dijkstra&#039;s algorihtm. l(e) is the length of the edge, d(e) is the distance of the edge to the closest atom Van der Waals sphere and ϵ is a small number to avoid division by zero [1]]]&lt;br /&gt;
&lt;br /&gt;
==== Complexity ====&lt;br /&gt;
* Worst-case: O(N^2 log N), where N is the number of atoms in the molecule. &lt;br /&gt;
* Average: O(M log M), where M is the number of vertices in the Voronoi diagram (in the worst case, M = N^2, but in most cases M = O(N)). As a result of the use of the incremental algorithm and Hilbert curve ordering, the complexity of calculating the Delaunay triangulation of most molecular structures is O(N log N). Finally, the complexity of all the remaining steps of the algorithm is at most O(M log M).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MolAxis ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MolAxis algorithm relies on Voronoi and Dijkstra&#039;s algorithm to find channels, similarly to MOLE. The algorithm consists of the following high-level steps:&lt;br /&gt;
&lt;br /&gt;
# Approximate the molecule using a collection of &#039;&#039;&#039;fixed-size spheres&#039;&#039;&#039;. The number of balls needed depends on the required quality of the approximation. In the extreme case, where the user is interested in a high resolution, each atom is approximated using a single sphere. &lt;br /&gt;
# Compute the &#039;&#039;&#039;Voronoi diagram&#039;&#039;&#039; of the centers of the fixed-sized spheres. The diagram is intersected with a user-defined bounding sphere. This defines the area of interest.&lt;br /&gt;
# Discard the parts of the Voronoi diagram that intersect the molecule.&lt;br /&gt;
# Define a &#039;&#039;&#039;graph&#039;&#039;&#039;, using the Voronoi vertices and edges. A weight is given to each edge, which depends on its length and on its distance from the surface of the molecule. &lt;br /&gt;
# Define a &#039;&#039;&#039;source point (root vertex)&#039;&#039;&#039;. The user can either supply a source point or allow MolAxis to automatically choose the source point to be the &#039;&#039;&#039;center of the largest cavity in the molecule&#039;&#039;&#039; (basically detect channels inside-out).&lt;br /&gt;
# Apply a shortest path optimization algorithm (&#039;&#039;&#039;Dijktra&#039;s algorithm&#039;&#039;&#039;) on the graph, computing a tree called the &amp;quot;corridor tree&amp;quot;.&lt;br /&gt;
# The desired channels are paths in the corridor tree. Duplicate channels are avoided by using the split distance parameter. The split distance bounds the distance to the least common ancestor of the channel and all previously reported channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MolAxisVoronoi.png|center|frame| Figure 6: Shows an example of fixed-size circles (light-blue) approximating varying-size circles and the pathway diagram of their centers. The discarded portion of the Voronoi diagram of their centers is depicted using dotted lines [2]. This figure also helps illustrate the usefulness of the Voronoi tessellation in computing pathways.]]&lt;br /&gt;
&lt;br /&gt;
== Protein Energetics ==&lt;br /&gt;
=== Metrics ===&lt;br /&gt;
# &#039;&#039;&#039;Hydrophobicity&#039;&#039;&#039;: Physical property of a molecule that is seemingly repelled from a mass of water. Hydrophilic molecules are attracted to water. Hydrophobicity plays a major role in protein folding. Hydrophobic molecules also tend to be nonpolar and prefer other neutral molecules and nonpolar solvents. Hydrophobicity is the most widely used metric.&lt;br /&gt;
# &#039;&#039;&#039;Hydrogen Bonds&#039;&#039;&#039;: Weak bonds between two molecules resulting from an electrostatic attraction between a proton in one molecule and an electronegative atom in the other. We often see these bonds between oxygen and hydrogen.&lt;br /&gt;
# &#039;&#039;&#039;Van der Waals Interactions&#039;&#039;&#039;: Also known as Van der Waals forces, they are forces driven by induced electrical interactions between two or more atoms or molecules that are very close to each other. Van der Waals interaction is the weakest of all intermolecular attractions between molecules. These forces are distance-dependent.&lt;br /&gt;
# &#039;&#039;&#039;Salt Bridges&#039;&#039;&#039;: Non-covalent (no sharing of eletrons; electromagnetic) interaction between two ionized sites. It has two components: a hydrogen bond and an electrostatic interaction.&lt;br /&gt;
# &#039;&#039;&#039;Disulfide Bridges&#039;&#039;&#039;: Strong bonds that can form between two cysteines (an amino acid). The strength of disulfide bridges helps stabilize a protein. Disulfide bridges are especially common in proteins that are secreted from cells.&lt;br /&gt;
# &#039;&#039;&#039;Charge&#039;&#039;&#039;: Plays a role in strength of bonds. A higher charge means that an atom will have stronger forces in an electromagnetic field.&lt;br /&gt;
# &#039;&#039;&#039;Polarity&#039;&#039;&#039;: Separation of electric charge leading to a molecule or its chemical groups having an electric dipole moment, with a negatively charged end and a positively charged end. Indicates the existence of polar bonds, which are covalent (sharing of electrons) and are quite strong. About [https://chem.libretexts.org/Bookshelves/Inorganic_Chemistry/Book%3A_Introduction_to_Inorganic_Chemistry/01%3A_Review_of_Chemical_Bonding/1.04%3A_Bond_Polarity_and_Bond_Strength bond polarity].&lt;br /&gt;
&lt;br /&gt;
== Candidate Method: Geometric Protein Cavities Detection (&#039;&#039;&#039;GPCD&#039;&#039;&#039;) ==&lt;br /&gt;
The Pipeline contains the following high-level algorithmic steps:&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Read protein ===&lt;br /&gt;
# Input: PDB file&lt;br /&gt;
# Output: A Polydata of the protein&lt;br /&gt;
# Algorithmic Step:&lt;br /&gt;
## (Angelos) Using vtkPDBReader, read the PDB file that included the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos) Upgrade vtkPDBReader to be able to manage multimodel proteins [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Fix vtkPDBReader error of setting wrong atom numbers [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Set up vtkPDBReader to utilize [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] for the Covalent radius and Van-der-Waals radius [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Improve [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] by using: [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### updated Van-der-Waals radius values provided by Los Alamos National Laboratory&lt;br /&gt;
### updated Covalent radius values provided by Cambridge Structural Database&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Extract unique protein Chains ===&lt;br /&gt;
# Input:  A Polydata of the protein&lt;br /&gt;
# Output: Unique protein chains without het-atoms and Symmetric Information&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a filter that removes the het-atoms and creates the polydata of the protein chains. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Detect the unique protein chains using Symmetry detection techniques ([https://en.wikipedia.org/wiki/Kabsch_algorithm Kabsch algorithm]) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Store the Symmetry information (rotation and translation). [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: This way we can mesh each unique chain individually&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Sort Atoms By Radius ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms&lt;br /&gt;
# Output: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using vtkSortFieldData we sort the non-Het atoms by radius in descending order. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed using vtkSMPTools [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Αngelos) Compute the Solvent Excluded Image ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order, probe radius, spacing&lt;br /&gt;
# Output: Solvent Excluded Image of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros) Calculate the optimal bounding box of the protein chain using CGAL&#039;s algorithm [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Angelos) Create the Solvent Accessible image by creating spheres for each atom that their radius is: Van der Waals radius + probe radius. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos) Perform Euclidean Distance Transform on the Solvent Accessible image using the &#039;&#039;&#039;itk::SignedMaurerDistanceMapImageFilter&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
## (Spiros) Extract Solvent Excluded image from the EDT result by setting: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### All pixel values &amp;lt; probe-radius - truncationError[atomType] - paddingDistance = 0&lt;br /&gt;
### All pixel values &amp;gt;= probe-radius - truncationError[atomType] - paddingDistance = 1&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros) Handle the calculation of truncationError[atomType] in a thread-safe way by sorting the atoms by radius in descending order [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Truncation error is caused because of the spacing of the image.&lt;br /&gt;
## (Spiros/Angelos) Select a paddingDistance value to help PODM3D produce an accurate surface [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Close holes that should not exist using the distance of the pixel point vs the actual atom [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Create smaller images using the concept that is described in the EDTSurf paper [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Compute the Solvent Excluded Surface (&#039;&#039;&#039;SES&#039;&#039;&#039;)===&lt;br /&gt;
# Input: Solvent Excluded Image of a chain&lt;br /&gt;
# Output: Solvent Excluded Surface of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, produce a volumetric mesh of the image. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, extract the volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;vtkDataSetSurfaceFilter&#039;&#039;&#039;, extract the surface of volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039; this filter is used because when PODM is extracting the surface, its triangles are oriented the wrong way.&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Advantages:&lt;br /&gt;
## Can control the number of elements on the surface&lt;br /&gt;
## the edge lengths bounds are relatively small which helps in the clustering.&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Select a default delta value. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fix volume grading crashing. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Surface needs to be smoothed. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Extract Atom Types of surface points ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain surface and a Polydata of the unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Output: Atom Types of surface points of the unique protein chain surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using a KD-tree, for each surface point, find the closest atom: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If the surface point is within the radius of the closest atom, assign the atom type of the closest point to the surface point&lt;br /&gt;
### Else, assign &#039;&#039;&#039;0&#039;&#039;&#039;, which means the surface point is part of the re-entrance surface.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Find an ideal offset distance value between the surface points and their closest atoms to improve accuracy. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Generate the Symmetric Protein chain surfaces ===&lt;br /&gt;
# Input: A vector of the unique protein chain surfaces and the Symmetry information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;SymmetricProteinChainsSurface&#039;&#039;&#039; filter that generates the non unique protein chain surfaces using the Symmetry information. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Assign Model and Chain arrays on SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces &amp;amp; model and chains information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;AssignModelAndChain&#039;&#039;&#039; filter that assigns the model and chain arrays for each protein chain surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Merge Protein Chain SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Output: Solvent Excluded Surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;MergeSurfaces&#039;&#039;&#039; filter that merges all the protein-chains surfaces into one and forms the solvent excluded surface of the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Compute ambient occlusion of the SES === &lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Ambient Occlusion values of surface points, normals of surface points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos/Spiros) Using IGL Library, which uses [https://www.embree.org/ Embree] and [https://eigen.tuxfamily.org/dox/ Eigen], calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Using the CUDA and Optix library, calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: GPU parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros/Angelos) Eliminate the noise that is created due to the non-smoothed &#039;&#039;&#039;PODM3D&#039;&#039;&#039; surface by assigning for each vertex the average ambient occlusion value of its neighbors + itself. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Use the symmetry information to minimize the memory footprint for CPU and GPU [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Compute Surface Statistics ===&lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Statistics of Surface Triangles&#039; Edges&lt;br /&gt;
# Algoritmic step:&lt;br /&gt;
## Compute min/mean/median/max edge lengths of the surface triangles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Cavity Detection ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Ambient Occlusion values of surface points, Surface Statistics&lt;br /&gt;
# Output: Protein Cavities&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a modified version of the clustering method &#039;&#039;&#039;DBSCAN&#039;&#039;&#039;, that finds neighbors based on their density &#039;&#039;&#039;and&#039;&#039;&#039; ambient occlusion values, form clusters that define protein cavities. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Idea 1: [https://link.springer.com/article/10.1023/A:1009884809343 A Fast Parallel Clustering Algorithm for Large Spatial Databases PDBSCAN]&lt;br /&gt;
#### Idea 2: Speculative Execution using &#039;&#039;&#039;PREMA&#039;&#039;&#039;&lt;br /&gt;
## (Angelos) Implement a rendering framework to visualize the clustering process using &#039;&#039;&#039;VTK&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Tune the clustering parameters:&lt;br /&gt;
### (Spiros) Search-radius = maxEdgeLength of the surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Esp = 5. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros/Angelos) Min cavity size = cavityFactor * delta^-2.178. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Default value of cavityFactor = 10.&lt;br /&gt;
## Limit the expansion of the cavity by using: &lt;br /&gt;
### (Spiros) A relative threshold for the difference an occlusion value from the average occlusion value of the cluster. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Define weights for the occlusion values, and convert the mean to a weighted mean. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Define occlusion values bounds to detect different types of cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## [https://dl.acm.org/doi/abs/10.1145/304181.304187 OPTICS: ordering points to identify the clustering structure] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Use symmetry information to quickly detect the per-model cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Angelos) Map Electrostatics Potentials on Surface Points ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Electrostatic Potentials Image &#039;&#039;&#039;ESP&#039;&#039;&#039; of [http://www.poissonboltzmann.org/ APBS], normals of surface points, probe radius, lowerThreshold-upperThreshold&lt;br /&gt;
# Output: Electrostatic values of surface points&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros/Angelos) For each surface point: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Scale the point using normals, and probe radius to the solvent-accessible surface, &lt;br /&gt;
### Get the value of the closest pixel from the &#039;&#039;&#039;ESP&#039;&#039;&#039; to the scaled point:&lt;br /&gt;
#### If value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
#### Else if, value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
#### Else get the interpolated value of the scaled points from the image:&lt;br /&gt;
##### If interpolated value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
##### Else if, interpolated value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos/Spiros) Create reader of the [https://www.ics.uci.edu/~dock/manuals/apbs/html/user-guide/x2674.html OpenDx] file format that is used as output by APBS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Select Clustered cavity points ===&lt;br /&gt;
# Input: Labeled Solvent Surface Surface&lt;br /&gt;
# Output: Labeled clustered cavity points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a SelectPoints filter. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Select only the points that are clustered at the cavity detection step. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: this is done to improve the speed of writing the output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Write Results:  ===&lt;br /&gt;
# Input: Labeled clustered cavity points or Labeled Solvent Surface Surface&lt;br /&gt;
# Output: solventSurface.vtp&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a vtkXMLPolyDataWriter, write the output file. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Create a writer, just for the cavities to minimize the IO. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Idea: See &#039;&#039;&#039;Fpocket&#039;&#039;&#039;.&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Note: a Paraview plugin may be developed for visualization purposes. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Classify cavity type ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Atomic Cavities, Atom Types of surface points&lt;br /&gt;
# Output: Labeled atomic Cavities&lt;br /&gt;
# Algorithm steps:&lt;br /&gt;
# Ideas that might be used: &lt;br /&gt;
## Ambient occlusion values based classification using mean distance cluster value [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Analyze the shape of clusters to identify what type of cavity they are. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### This can potentially be done using machine learning.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== GPCD vs MOLE ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| GPCD&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| MOLE&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Surface Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Interior Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Visualize Exact Channel Shape&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Very Large Molecules&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO (very slow)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Multi-Model Files&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Parallelization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Relative Performance&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | VERY FAST&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | SLOW&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Intuitive Visualization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| False Positives&lt;br /&gt;
| style=&amp;quot;background-color: orange; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Quantify Major Structural Features&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rbvi.ucsf.edu/chimerax/ UCSF ChimeraX]&#039;&#039;&#039;: Next-generation molecular visualization program from the Resource for Biocomputing, Visualization, and Informatics (RBVI).&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/vmd/ VMD]&#039;&#039;&#039;: Molecular visualization program for displaying, animating, and analyzing large biomolecular systems using 3D graphics and built-in scripting. Used in conjunction with NAMD for visualizing molecular dynamics simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/namd/ NAMD]&#039;&#039;&#039;: Parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. Scales to hundreds of cores for typical simulations and beyond 500,000 cores for the largest simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/Platform/App/Mole MOLE]&#039;&#039;&#039;: Universal toolkit for rapid location and characterization of channels and pores in biomacromolecules.&lt;br /&gt;
* &#039;&#039;&#039;[https://caver.cz/ CAVER]&#039;&#039;&#039;: Software tool for the analysis and visualization of tunnels and channels in protein structures.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/ RCSB PDB Protein Data Bank]&#039;&#039;&#039;: The largest and most popular database of protein structures.&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5839519/ Survey: Geometric Protein Cavity Detection Algorithms]&#039;&#039;&#039;: Paper surveying the current geometric algorithms for protein cavity detection. This is a great resource for understanding this project.&lt;br /&gt;
* &#039;&#039;&#039;[https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-39 MOLE 2.0]&#039;&#039;&#039;: Paper describing the MOLE 2.0 protein cavity detection software. Contains a good algorithm that can be used for extracting a good approximation of the surface of a point cloud of atoms.&lt;br /&gt;
* &#039;&#039;&#039;[https://reader.elsevier.com/reader/sd/pii/S0969212607003759?token=4D0F6192E971D4406E8F7CBA047B0490C8715EBD67579D26427E0E63BD0298BEBF948DB238A28E4EAE2D17EBC6DF4E50 MOLE 1.0]&#039;&#039;&#039;: Paper describing the MOLE 1.0 algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/epdf/10.1002/prot.22052 MolAxis]&#039;&#039;&#039;: Paper describing the MolAxis protein cavity detection software.&lt;br /&gt;
* &#039;&#039;&#039;[https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002708 CAVER 3.0]&#039;&#039;&#039;: Paper describing the CAVER 3.0 protein cavity detection software. This algorithm specializes in identifying tunnels.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.sciencedirect.com/science/article/abs/pii/S0022283606008746 Travel Depth]&#039;&#039;&#039;: Paper describing the &amp;quot;travel depth&amp;quot; algorithm for protein cavity visualization.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/full/10.1111/cgf.12120 GPU Protein Cavity Detection using Ambient Occlusion]&#039;&#039;&#039;: Paper describing a GPU-based protein cavity detection algorithm that utilizes Ambient Occlusion.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf DBSCAN]&#039;&#039;&#039;: Paper describing the DBSCAN clustering algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://link.springer.com/article/10.1023/A:1009884809343 PDBSCAN]&#039;&#039;&#039;: Paper describing a parallel version of DBSCAN.&lt;br /&gt;
* &#039;&#039;&#039;[https://pubmed.ncbi.nlm.nih.gov/31133031/ Coronavirus envelope protein]&#039;&#039;&#039;: Paper describing research on the envelope protein of coronaviruses.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.cell.com/biophysj/fulltext/S0006-3495(20)33168-4 COVID-19 virion model]&#039;&#039;&#039;: Paper describing a detail model of the SARS-CoV-2 virus particle.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7685317/pdf/nihpp-2020.11.19.390187.pdf COVID-19 simulation]&#039;&#039;&#039;: Paper describing large-scale COVID-19 simulations.&lt;br /&gt;
&lt;br /&gt;
=== Organizations/Groups ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/ University of Illinois at Urbana-Champaign: Theoretical and Computational Biophysics Group]&#039;&#039;&#039;: Perhaps the most important group in molecular dynamics. Developers of VMD and NAMD. Ran the simulation for the 200 million atom model of COVID-19.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/ Oak Ridge National Laboratory (ORNL)]&#039;&#039;&#039;: Major national lab with active involvement in drug discovery and design using supercomputers.&lt;br /&gt;
* &#039;&#039;&#039;[http://rbvi.ucsf.edu/ Resource for Biocomputing, Visualization, and Informatics (RBVI)]&#039;&#039;&#039;: Developers of UCSF Chimera and UCSF ChimeraX.&lt;br /&gt;
* &#039;&#039;&#039;[https://ist.ac.at/en/research/edelsbrunner-group/ IST Austria: Edelsbrunner Group]&#039;&#039;&#039;: Important group in algorithms, computational geometry, and computational topology. Involved with protein cavity detection in the past and potentially involved now. The head of the group, Edelsbrunner created alpha shapes.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tacc.utexas.edu/systems/frontera Texas Advanced Computing Center]&#039;&#039;&#039;: Maintainers of the Frontera supercomputer, the fifth fastest supercomputer in the world (2020). The simulation for the 200 million atom model of COVID-19 was executed on this supercomputer.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/ WebChemistry]&#039;&#039;&#039;: Developed MOLE and many other software tools related to molecular analysis.&lt;br /&gt;
&lt;br /&gt;
=== Important Links ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.hpcwire.com/off-the-wire/coronavirus-massive-simulations-completed-on-frontera-supercomputer/ COVID-19 200 million atom NAMD simulation]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/news/early-research-existing-drug-compounds-supercomputing-could-combat-coronavirus/ ORNL COVID-19 spike drug identification]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Proteins ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/1jj2 Large Ribosomal Subunit (98,693 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VXX COVID-19 Spike Glycoprotein, Closed State (23,694 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6Y2E COVID-19 Main Protease (5,370 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VWW COVID-19 NSP15 Endoribonuclease (24,036 atoms)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] Simões, T., Lopes, D., Dias, S., Fernandes, F., Pereira, J., Jorge, J., Bajaj, C., &amp;amp; Gomes, A. (2017). Geometric Detection Algorithms for Cavities on Protein Surfaces in Molecular Graphics: A Survey. Computer graphics forum : journal of the European Association for Computer Graphics, 36(8), 643–683. https://doi.org/10.1111/cgf.13158&lt;br /&gt;
&lt;br /&gt;
[2] Yaffe, Fishelovitch, Wolfson, Halperin, &amp;amp; Nussinov. (2008). MolAxis: Efficient and accurate identification of channels in macromolecules. Proteins: Structure, Function, and Bioinformatics, 73(1), 72-86.&lt;br /&gt;
&lt;br /&gt;
[3] Coleman, R. G., &amp;amp; Sharp, K. A. (2006). Travel depth, a new shape descriptor for macromolecules: application to ligand binding. Journal of molecular biology, 362(3), 441–458. https://doi.org/10.1016/j.jmb.2006.07.022&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8453</id>
		<title>Internal:GPCD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:GPCD&amp;diff=8453"/>
		<updated>2021-04-19T14:51:40Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* (Spiros/Αngelos) Compute the Solvent Excluded Image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavities ===&lt;br /&gt;
Cavities are structural features of proteins and they are often important for drug discovery and design. There are different kinds of cavities, including pockets, voids, tunnels, and channels. The types of cavities are listed in more detail in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityTypes.jpg|center|frame| Figure 1: The basic types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Void&#039;&#039;&#039;: A cavity that looks like internal &amp;quot;hole&amp;quot; in a protein with no connection to the surface.&lt;br /&gt;
# &#039;&#039;&#039;Cleft&#039;&#039;&#039;: A pocket that looks like a &amp;quot;dent&amp;quot; in the surface of a protein. Can also be found as part of a tunnel or channel.&lt;br /&gt;
# &#039;&#039;&#039;Invagination&#039;&#039;&#039;: A pocket that looks like a &amp;quot;cove&amp;quot;. It has a small opening on the surface of a protein and leads to a larger interior. Can also be found as part of a tunnel or after a cleft.&lt;br /&gt;
# &#039;&#039;&#039;Tunnel&#039;&#039;&#039;: A pocket that has an opening on the surface of a protein and leads to somewhere in the interior. Has no opening on the other side.&lt;br /&gt;
# &#039;&#039;&#039;Channel&#039;&#039;&#039;: A cavity that has an opening on one side of the surface of a protein and leads to another opening in another location on the surface of the protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course, the types of cavities listed in figure 1 are only the basic ones. Combinations of these are also possible as shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityAdvancedTypes.jpg|center|frame| Figure 2: Combination types of protein cavities [1]]]&lt;br /&gt;
&lt;br /&gt;
=== Protein Cavity Detection Methods ===&lt;br /&gt;
There are several methods for detecting protein cavities. There are sphere based methods, grid based methods, grid-and-sphere based methods, surface based methods, grid-and-surface based methods, time-varying methods, GPU based methods, consensus based methods, and finally tessellation based methods. These algorithms are shown in more detail in figure 3. Tessellation based methods mainly rely on Voronoi tessellation. Some methods rely on weighted Voronoi tessellation because of its ability to more accurately represent the volume of atoms. The Voronoi tessellation in these methods is computed from a set of points representing the atomic centers of the underlying protein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:proteinCavityDetectionAlgorithms.jpg|center|frame| Figure 3: A hierarchy of protein cavity detection algorithms [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literature Review ==&lt;br /&gt;
&lt;br /&gt;
=== MOLE ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MOLE algorithm is specifically designed to identify tunnels and channels. Finding superficial cavities is a secondary concern and does so as part of the surface approximation step. MOLE utilizes the surface obtained by the refinement of the convex hull to find superficial cavities such as clefts and invaginations. In essence, the approximation of a more accurate surface and the detection of these superficial cavities are closely related. As tetrahedra are removed from the convex hull to get a more accurate surface approximation, a parameter called &#039;&#039;interior threshold&#039;&#039; controls how many superficial cavities are found. For example, if the number of tetrahedra removed from a specific part of the molecule exceeds this threshold, the algorithm marks these tetrahedra as part of a superficial cavity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:moleVoronoiTunnelPath.jpg|center|frame| Figure 4: Shows in 2D the Voronoi diagram (thin lines) and the convex hull (dotted line) of molecule represented by atoms (circles). Each Voronoi edge is evaluated by the cost function (numbers). The thick line represents the optimal path found by the Dijkstra&#039;s algorithm from the given starting point (black circle), i.e., centerline of found tunnel. [1]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the more complicated types of cavities, tunnels and channels, MOLE uses the Voronoi diagram to identify them. Start and end points are defined as the centers of the deepest tetrahedra in each cavity. The depth of the tetrahedron is defined as the number of Voronoi edges from the closest boundary tetrahedron (on the surface). Tunnels/channels are computed as the shortest paths between all pairs of start and end points in the same cavity diagram.&lt;br /&gt;
&lt;br /&gt;
[[File:MoleDijkstraWeightFunction.png|center|frame| Figure 5: Shows the weight function used to estimate the weight of each Voronoi edge for Dijkstra&#039;s algorihtm. l(e) is the length of the edge, d(e) is the distance of the edge to the closest atom Van der Waals sphere and ϵ is a small number to avoid division by zero [1]]]&lt;br /&gt;
&lt;br /&gt;
==== Complexity ====&lt;br /&gt;
* Worst-case: O(N^2 log N), where N is the number of atoms in the molecule. &lt;br /&gt;
* Average: O(M log M), where M is the number of vertices in the Voronoi diagram (in the worst case, M = N^2, but in most cases M = O(N)). As a result of the use of the incremental algorithm and Hilbert curve ordering, the complexity of calculating the Delaunay triangulation of most molecular structures is O(N log N). Finally, the complexity of all the remaining steps of the algorithm is at most O(M log M).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MolAxis ===&lt;br /&gt;
&lt;br /&gt;
==== Method ====&lt;br /&gt;
The MolAxis algorithm relies on Voronoi and Dijkstra&#039;s algorithm to find channels, similarly to MOLE. The algorithm consists of the following high-level steps:&lt;br /&gt;
&lt;br /&gt;
# Approximate the molecule using a collection of &#039;&#039;&#039;fixed-size spheres&#039;&#039;&#039;. The number of balls needed depends on the required quality of the approximation. In the extreme case, where the user is interested in a high resolution, each atom is approximated using a single sphere. &lt;br /&gt;
# Compute the &#039;&#039;&#039;Voronoi diagram&#039;&#039;&#039; of the centers of the fixed-sized spheres. The diagram is intersected with a user-defined bounding sphere. This defines the area of interest.&lt;br /&gt;
# Discard the parts of the Voronoi diagram that intersect the molecule.&lt;br /&gt;
# Define a &#039;&#039;&#039;graph&#039;&#039;&#039;, using the Voronoi vertices and edges. A weight is given to each edge, which depends on its length and on its distance from the surface of the molecule. &lt;br /&gt;
# Define a &#039;&#039;&#039;source point (root vertex)&#039;&#039;&#039;. The user can either supply a source point or allow MolAxis to automatically choose the source point to be the &#039;&#039;&#039;center of the largest cavity in the molecule&#039;&#039;&#039; (basically detect channels inside-out).&lt;br /&gt;
# Apply a shortest path optimization algorithm (&#039;&#039;&#039;Dijktra&#039;s algorithm&#039;&#039;&#039;) on the graph, computing a tree called the &amp;quot;corridor tree&amp;quot;.&lt;br /&gt;
# The desired channels are paths in the corridor tree. Duplicate channels are avoided by using the split distance parameter. The split distance bounds the distance to the least common ancestor of the channel and all previously reported channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:MolAxisVoronoi.png|center|frame| Figure 6: Shows an example of fixed-size circles (light-blue) approximating varying-size circles and the pathway diagram of their centers. The discarded portion of the Voronoi diagram of their centers is depicted using dotted lines [2]. This figure also helps illustrate the usefulness of the Voronoi tessellation in computing pathways.]]&lt;br /&gt;
&lt;br /&gt;
== Protein Energetics ==&lt;br /&gt;
=== Metrics ===&lt;br /&gt;
# &#039;&#039;&#039;Hydrophobicity&#039;&#039;&#039;: Physical property of a molecule that is seemingly repelled from a mass of water. Hydrophilic molecules are attracted to water. Hydrophobicity plays a major role in protein folding. Hydrophobic molecules also tend to be nonpolar and prefer other neutral molecules and nonpolar solvents. Hydrophobicity is the most widely used metric.&lt;br /&gt;
# &#039;&#039;&#039;Hydrogen Bonds&#039;&#039;&#039;: Weak bonds between two molecules resulting from an electrostatic attraction between a proton in one molecule and an electronegative atom in the other. We often see these bonds between oxygen and hydrogen.&lt;br /&gt;
# &#039;&#039;&#039;Van der Waals Interactions&#039;&#039;&#039;: Also known as Van der Waals forces, they are forces driven by induced electrical interactions between two or more atoms or molecules that are very close to each other. Van der Waals interaction is the weakest of all intermolecular attractions between molecules. These forces are distance-dependent.&lt;br /&gt;
# &#039;&#039;&#039;Salt Bridges&#039;&#039;&#039;: Non-covalent (no sharing of eletrons; electromagnetic) interaction between two ionized sites. It has two components: a hydrogen bond and an electrostatic interaction.&lt;br /&gt;
# &#039;&#039;&#039;Disulfide Bridges&#039;&#039;&#039;: Strong bonds that can form between two cysteines (an amino acid). The strength of disulfide bridges helps stabilize a protein. Disulfide bridges are especially common in proteins that are secreted from cells.&lt;br /&gt;
# &#039;&#039;&#039;Charge&#039;&#039;&#039;: Plays a role in strength of bonds. A higher charge means that an atom will have stronger forces in an electromagnetic field.&lt;br /&gt;
# &#039;&#039;&#039;Polarity&#039;&#039;&#039;: Separation of electric charge leading to a molecule or its chemical groups having an electric dipole moment, with a negatively charged end and a positively charged end. Indicates the existence of polar bonds, which are covalent (sharing of electrons) and are quite strong. About [https://chem.libretexts.org/Bookshelves/Inorganic_Chemistry/Book%3A_Introduction_to_Inorganic_Chemistry/01%3A_Review_of_Chemical_Bonding/1.04%3A_Bond_Polarity_and_Bond_Strength bond polarity].&lt;br /&gt;
&lt;br /&gt;
== Candidate Method: Geometric Protein Cavities Detection (&#039;&#039;&#039;GPCD&#039;&#039;&#039;) ==&lt;br /&gt;
The Pipeline contains the following high-level algorithmic steps:&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Read protein ===&lt;br /&gt;
# Input: PDB file&lt;br /&gt;
# Output: A Polydata of the protein&lt;br /&gt;
# Algorithmic Step:&lt;br /&gt;
## (Angelos) Using vtkPDBReader, read the PDB file that included the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;]  [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos) Upgrade vtkPDBReader to be able to manage multimodel proteins [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Fix vtkPDBReader error of setting wrong atom numbers [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Set up vtkPDBReader to utilize [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] for the Covalent radius and Van-der-Waals radius [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Improve [https://sourceforge.net/projects/bodr/ The Blue Obelisk Dataset] by using: [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### updated Van-der-Waals radius values provided by Los Alamos National Laboratory&lt;br /&gt;
### updated Covalent radius values provided by Cambridge Structural Database&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Extract unique protein Chains ===&lt;br /&gt;
# Input:  A Polydata of the protein&lt;br /&gt;
# Output: Unique protein chains without het-atoms and Symmetric Information&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a filter that removes the het-atoms and creates the polydata of the protein chains. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Detect the unique protein chains using Symmetry detection techniques ([https://en.wikipedia.org/wiki/Kabsch_algorithm Kabsch algorithm]) [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Store the Symmetry information (rotation and translation). [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: This way we can mesh each unique chain individually&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Sort Atoms By Radius ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms&lt;br /&gt;
# Output: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using vtkSortFieldData we sort the non-Het atoms by radius in descending order. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed using vtkSMPTools [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Αngelos) Compute the Solvent Excluded Image ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain without Het atoms sorted by radius in descending order, probe radius, spacing&lt;br /&gt;
# Output: Solvent Excluded Image of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros) Calculate the minimum bounding box of the protein chain using CGAL&#039;s algorithm [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros/Angelos) Create the Solvent Accessible image by creating spheres for each atom that their radius is: Van der Waals radius + probe radius. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos) Perform Euclidean Distance Transform on the Solvent Accessible image using the &#039;&#039;&#039;itk::SignedMaurerDistanceMapImageFilter&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
## (Spiros) Extract Solvent Excluded image from the EDT result by setting: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### All pixel values &amp;lt; probe-radius - truncationError[atomType] - paddingDistance = 0&lt;br /&gt;
### All pixel values &amp;gt;= probe-radius - truncationError[atomType] - paddingDistance = 1&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: GPU parallelism can be employed [TODO]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros) Handle the calculation of truncationError[atomType] in a thread-safe way by sorting the atoms by radius in descending order [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Truncation error is caused because of the spacing of the image.&lt;br /&gt;
## (Spiros/Angelos) Select a paddingDistance value to help PODM3D produce an accurate surface [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Close holes that should not exist using the distance of the pixel point vs the actual atom [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Spiros) Create smaller images using the concept that is described in the EDTSurf paper [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Compute the Solvent Excluded Surface (&#039;&#039;&#039;SES&#039;&#039;&#039;)===&lt;br /&gt;
# Input: Solvent Excluded Image of a chain&lt;br /&gt;
# Output: Solvent Excluded Surface of a chain&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, produce a volumetric mesh of the image. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;PODM3D&#039;&#039;&#039;, extract the volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Using &#039;&#039;&#039;vtkDataSetSurfaceFilter&#039;&#039;&#039;, extract the surface of volumetric mesh. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note 1&#039;&#039;&#039; this filter is used because when PODM is extracting the surface, its triangles are oriented the wrong way.&lt;br /&gt;
### &#039;&#039;&#039;Note 2&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Advantages:&lt;br /&gt;
## Can control the number of elements on the surface&lt;br /&gt;
## the edge lengths bounds are relatively small which helps in the clustering.&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Select a default delta value. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Fix volume grading crashing. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Surface needs to be smoothed. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Extract Atom Types of surface points ===&lt;br /&gt;
# Input: A Polydata of a unique protein chain surface and a Polydata of the unique protein chain without Het atoms sorted by radius in descending order&lt;br /&gt;
# Output: Atom Types of surface points of the unique protein chain surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Using a KD-tree, for each surface point, find the closest atom: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### If the surface point is within the radius of the closest atom, assign the atom type of the closest point to the surface point&lt;br /&gt;
### Else, assign &#039;&#039;&#039;0&#039;&#039;&#039;, which means the surface point is part of the re-entrance surface.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Find an ideal offset distance value between the surface points and their closest atoms to improve accuracy. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Generate the Symmetric Protein chain surfaces ===&lt;br /&gt;
# Input: A vector of the unique protein chain surfaces and the Symmetry information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;SymmetricProteinChainsSurface&#039;&#039;&#039; filter that generates the non unique protein chain surfaces using the Symmetry information. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Assign Model and Chain arrays on SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces &amp;amp; model and chains information&lt;br /&gt;
# Output: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;AssignModelAndChain&#039;&#039;&#039; filter that assigns the model and chain arrays for each protein chain surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Merge Protein Chain SESs ===&lt;br /&gt;
# Input: A vector of all the protein chain surfaces with model and chain arrays&lt;br /&gt;
# Output: Solvent Excluded Surface&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement the &#039;&#039;&#039;MergeSurfaces&#039;&#039;&#039; filter that merges all the protein-chains surfaces into one and forms the solvent excluded surface of the protein. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Compute ambient occlusion of the SES === &lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Ambient Occlusion values of surface points, normals of surface points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos/Spiros) Using IGL Library, which uses [https://www.embree.org/ Embree] and [https://eigen.tuxfamily.org/dox/ Eigen], calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Using the CUDA and Optix library, calculate normals of surface points and then calculate Ambient occlusion values for all the surface points. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: GPU parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Spiros/Angelos) Eliminate the noise that is created due to the non-smoothed &#039;&#039;&#039;PODM3D&#039;&#039;&#039; surface by assigning for each vertex the average ambient occlusion value of its neighbors + itself. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Use the symmetry information to minimize the memory footprint for CPU and GPU [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
===(Spiros) Compute Surface Statistics ===&lt;br /&gt;
# Input: Solvent Excluded Surface&lt;br /&gt;
# Output: Statistics of Surface Triangles&#039; Edges&lt;br /&gt;
# Algoritmic step:&lt;br /&gt;
## Compute min/mean/median/max edge lengths of the surface triangles [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Cavity Detection ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Ambient Occlusion values of surface points, Surface Statistics&lt;br /&gt;
# Output: Protein Cavities&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a modified version of the clustering method &#039;&#039;&#039;DBSCAN&#039;&#039;&#039;, that finds neighbors based on their density &#039;&#039;&#039;and&#039;&#039;&#039; ambient occlusion values, form clusters that define protein cavities. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: shared memory parallelism can be employed [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Idea 1: [https://link.springer.com/article/10.1023/A:1009884809343 A Fast Parallel Clustering Algorithm for Large Spatial Databases PDBSCAN]&lt;br /&gt;
#### Idea 2: Speculative Execution using &#039;&#039;&#039;PREMA&#039;&#039;&#039;&lt;br /&gt;
## (Angelos) Implement a rendering framework to visualize the clustering process using &#039;&#039;&#039;VTK&#039;&#039;&#039;. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## Tune the clustering parameters:&lt;br /&gt;
### (Spiros) Search-radius = maxEdgeLength of the surface. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Esp = 5. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Spiros/Angelos) Min cavity size = cavityFactor * delta^-2.178. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
#### Default value of cavityFactor = 10.&lt;br /&gt;
## Limit the expansion of the cavity by using: &lt;br /&gt;
### (Spiros) A relative threshold for the difference an occlusion value from the average occlusion value of the cluster. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Fall 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### (Angelos) Define weights for the occlusion values, and convert the mean to a weighted mean. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Define occlusion values bounds to detect different types of cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## [https://dl.acm.org/doi/abs/10.1145/304181.304187 OPTICS: ordering points to identify the clustering structure] [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Use symmetry information to quickly detect the per-model cavities [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros/Angelos) Map Electrostatics Potentials on Surface Points ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Electrostatic Potentials Image &#039;&#039;&#039;ESP&#039;&#039;&#039; of [http://www.poissonboltzmann.org/ APBS], normals of surface points, probe radius, lowerThreshold-upperThreshold&lt;br /&gt;
# Output: Electrostatic values of surface points&lt;br /&gt;
# Algorithmic steps:&lt;br /&gt;
## (Spiros/Angelos) For each surface point: [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Scale the point using normals, and probe radius to the solvent-accessible surface, &lt;br /&gt;
### Get the value of the closest pixel from the &#039;&#039;&#039;ESP&#039;&#039;&#039; to the scaled point:&lt;br /&gt;
#### If value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
#### Else if, value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
#### Else get the interpolated value of the scaled points from the image:&lt;br /&gt;
##### If interpolated value &amp;gt; upperThreshold, set electrostatic value of point = upperThreshold&lt;br /&gt;
##### Else if, interpolated value &amp;lt; lowerThreshold, set electrostatic value of point = lowerThreshold&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
# Challenges:&lt;br /&gt;
## (Angelos/Spiros) Create reader of the [https://www.ics.uci.edu/~dock/manuals/apbs/html/user-guide/x2674.html OpenDx] file format that is used as output by APBS [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Summer 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== (Spiros) Select Clustered cavity points ===&lt;br /&gt;
# Input: Labeled Solvent Surface Surface&lt;br /&gt;
# Output: Labeled clustered cavity points&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## Implement a SelectPoints filter. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Select only the points that are clustered at the cavity detection step. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2021&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Note: this is done to improve the speed of writing the output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Write Results:  ===&lt;br /&gt;
# Input: Labeled clustered cavity points or Labeled Solvent Surface Surface&lt;br /&gt;
# Output: solventSurface.vtp&lt;br /&gt;
# Algorithmic step:&lt;br /&gt;
## (Angelos) Using a vtkXMLPolyDataWriter, write the output file. [&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;DONE&amp;lt;/span&amp;gt;] [&amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;Spring 2020&amp;lt;/span&amp;gt;]&lt;br /&gt;
## (Angelos/Spiros) Create a writer, just for the cavities to minimize the IO. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### Idea: See &#039;&#039;&#039;Fpocket&#039;&#039;&#039;.&lt;br /&gt;
# Ideas that might be used:&lt;br /&gt;
## Note: a Paraview plugin may be developed for visualization purposes. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
=== (Angelos/Spiros) Classify cavity type ===&lt;br /&gt;
# Input: Solvent Excluded Surface, Atomic Cavities, Atom Types of surface points&lt;br /&gt;
# Output: Labeled atomic Cavities&lt;br /&gt;
# Algorithm steps:&lt;br /&gt;
# Ideas that might be used: &lt;br /&gt;
## Ambient occlusion values based classification using mean distance cluster value [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
## Analyze the shape of clusters to identify what type of cavity they are. [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
### This can potentially be done using machine learning.&lt;br /&gt;
### &#039;&#039;&#039;Note&#039;&#039;&#039;: Shared memory parallelism can be used [&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;TODO&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== GPCD vs MOLE ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| GPCD&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| MOLE&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Surface Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Detect Interior Cavities&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Visualize Exact Channel Shape&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Very Large Molecules&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO (very slow)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Works on Multi-Model Files&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Parallelization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Relative Performance&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | VERY FAST&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | SLOW&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Intuitive Visualization&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| False Positives&lt;br /&gt;
| style=&amp;quot;background-color: orange; color: white;&amp;quot; | YES (more)&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES (less)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| Quantify Major Structural Features&lt;br /&gt;
| style=&amp;quot;background-color: green; color: white;&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;background-color: red; color: white;&amp;quot; | NO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rbvi.ucsf.edu/chimerax/ UCSF ChimeraX]&#039;&#039;&#039;: Next-generation molecular visualization program from the Resource for Biocomputing, Visualization, and Informatics (RBVI).&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/vmd/ VMD]&#039;&#039;&#039;: Molecular visualization program for displaying, animating, and analyzing large biomolecular systems using 3D graphics and built-in scripting. Used in conjunction with NAMD for visualizing molecular dynamics simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/Research/namd/ NAMD]&#039;&#039;&#039;: Parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems. Scales to hundreds of cores for typical simulations and beyond 500,000 cores for the largest simulations.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/Platform/App/Mole MOLE]&#039;&#039;&#039;: Universal toolkit for rapid location and characterization of channels and pores in biomacromolecules.&lt;br /&gt;
* &#039;&#039;&#039;[https://caver.cz/ CAVER]&#039;&#039;&#039;: Software tool for the analysis and visualization of tunnels and channels in protein structures.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/ RCSB PDB Protein Data Bank]&#039;&#039;&#039;: The largest and most popular database of protein structures.&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5839519/ Survey: Geometric Protein Cavity Detection Algorithms]&#039;&#039;&#039;: Paper surveying the current geometric algorithms for protein cavity detection. This is a great resource for understanding this project.&lt;br /&gt;
* &#039;&#039;&#039;[https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-5-39 MOLE 2.0]&#039;&#039;&#039;: Paper describing the MOLE 2.0 protein cavity detection software. Contains a good algorithm that can be used for extracting a good approximation of the surface of a point cloud of atoms.&lt;br /&gt;
* &#039;&#039;&#039;[https://reader.elsevier.com/reader/sd/pii/S0969212607003759?token=4D0F6192E971D4406E8F7CBA047B0490C8715EBD67579D26427E0E63BD0298BEBF948DB238A28E4EAE2D17EBC6DF4E50 MOLE 1.0]&#039;&#039;&#039;: Paper describing the MOLE 1.0 algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/epdf/10.1002/prot.22052 MolAxis]&#039;&#039;&#039;: Paper describing the MolAxis protein cavity detection software.&lt;br /&gt;
* &#039;&#039;&#039;[https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002708 CAVER 3.0]&#039;&#039;&#039;: Paper describing the CAVER 3.0 protein cavity detection software. This algorithm specializes in identifying tunnels.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.sciencedirect.com/science/article/abs/pii/S0022283606008746 Travel Depth]&#039;&#039;&#039;: Paper describing the &amp;quot;travel depth&amp;quot; algorithm for protein cavity visualization.&lt;br /&gt;
* &#039;&#039;&#039;[https://onlinelibrary-wiley-com.proxy.lib.odu.edu/doi/full/10.1111/cgf.12120 GPU Protein Cavity Detection using Ambient Occlusion]&#039;&#039;&#039;: Paper describing a GPU-based protein cavity detection algorithm that utilizes Ambient Occlusion.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf DBSCAN]&#039;&#039;&#039;: Paper describing the DBSCAN clustering algorithm.&lt;br /&gt;
* &#039;&#039;&#039;[https://link.springer.com/article/10.1023/A:1009884809343 PDBSCAN]&#039;&#039;&#039;: Paper describing a parallel version of DBSCAN.&lt;br /&gt;
* &#039;&#039;&#039;[https://pubmed.ncbi.nlm.nih.gov/31133031/ Coronavirus envelope protein]&#039;&#039;&#039;: Paper describing research on the envelope protein of coronaviruses.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.cell.com/biophysj/fulltext/S0006-3495(20)33168-4 COVID-19 virion model]&#039;&#039;&#039;: Paper describing a detail model of the SARS-CoV-2 virus particle.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7685317/pdf/nihpp-2020.11.19.390187.pdf COVID-19 simulation]&#039;&#039;&#039;: Paper describing large-scale COVID-19 simulations.&lt;br /&gt;
&lt;br /&gt;
=== Organizations/Groups ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ks.uiuc.edu/ University of Illinois at Urbana-Champaign: Theoretical and Computational Biophysics Group]&#039;&#039;&#039;: Perhaps the most important group in molecular dynamics. Developers of VMD and NAMD. Ran the simulation for the 200 million atom model of COVID-19.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/ Oak Ridge National Laboratory (ORNL)]&#039;&#039;&#039;: Major national lab with active involvement in drug discovery and design using supercomputers.&lt;br /&gt;
* &#039;&#039;&#039;[http://rbvi.ucsf.edu/ Resource for Biocomputing, Visualization, and Informatics (RBVI)]&#039;&#039;&#039;: Developers of UCSF Chimera and UCSF ChimeraX.&lt;br /&gt;
* &#039;&#039;&#039;[https://ist.ac.at/en/research/edelsbrunner-group/ IST Austria: Edelsbrunner Group]&#039;&#039;&#039;: Important group in algorithms, computational geometry, and computational topology. Involved with protein cavity detection in the past and potentially involved now. The head of the group, Edelsbrunner created alpha shapes.&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tacc.utexas.edu/systems/frontera Texas Advanced Computing Center]&#039;&#039;&#039;: Maintainers of the Frontera supercomputer, the fifth fastest supercomputer in the world (2020). The simulation for the 200 million atom model of COVID-19 was executed on this supercomputer.&lt;br /&gt;
* &#039;&#039;&#039;[https://webchem.ncbr.muni.cz/ WebChemistry]&#039;&#039;&#039;: Developed MOLE and many other software tools related to molecular analysis.&lt;br /&gt;
&lt;br /&gt;
=== Important Links ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.hpcwire.com/off-the-wire/coronavirus-massive-simulations-completed-on-frontera-supercomputer/ COVID-19 200 million atom NAMD simulation]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ornl.gov/news/early-research-existing-drug-compounds-supercomputing-could-combat-coronavirus/ ORNL COVID-19 spike drug identification]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Proteins ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/1jj2 Large Ribosomal Subunit (98,693 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VXX COVID-19 Spike Glycoprotein, Closed State (23,694 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6Y2E COVID-19 Main Protease (5,370 atoms)]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://www.rcsb.org/structure/6VWW COVID-19 NSP15 Endoribonuclease (24,036 atoms)]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[1] Simões, T., Lopes, D., Dias, S., Fernandes, F., Pereira, J., Jorge, J., Bajaj, C., &amp;amp; Gomes, A. (2017). Geometric Detection Algorithms for Cavities on Protein Surfaces in Molecular Graphics: A Survey. Computer graphics forum : journal of the European Association for Computer Graphics, 36(8), 643–683. https://doi.org/10.1111/cgf.13158&lt;br /&gt;
&lt;br /&gt;
[2] Yaffe, Fishelovitch, Wolfson, Halperin, &amp;amp; Nussinov. (2008). MolAxis: Efficient and accurate identification of channels in macromolecules. Proteins: Structure, Function, and Bioinformatics, 73(1), 72-86.&lt;br /&gt;
&lt;br /&gt;
[3] Coleman, R. G., &amp;amp; Sharp, K. A. (2006). Travel depth, a new shape descriptor for macromolecules: application to ligand binding. Journal of molecular biology, 362(3), 441–458. https://doi.org/10.1016/j.jmb.2006.07.022&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:Student_Reports&amp;diff=8452</id>
		<title>Internal:Student Reports</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:Student_Reports&amp;diff=8452"/>
		<updated>2021-04-14T21:17:26Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Kevin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Eleni, Thomas , Angelos==&lt;br /&gt;
[[Internal:ReportCloud | Cloud Report]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Preprocess_Medical_Images |  Preprocessing of Medical Images]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Execution_And_Evaluation_Medical_Images |  Execution and Evaluation of Medical Imaging data]]&lt;br /&gt;
&lt;br /&gt;
== Angelos ==&lt;br /&gt;
&lt;br /&gt;
[[Internal:GPCD | GPCD]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:APBNRRExecutionStatus | APBNRR Execution Status]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PAPBNRRComparison | Pristine vs New PAPBNRR]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:APBNRRMachineLearning | APBNRR Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
[[Internal: SlicerExtensions | Slicer Extensions]]&lt;br /&gt;
&lt;br /&gt;
== Joi ==&lt;br /&gt;
[[Tasks | Tasks ]]&lt;br /&gt;
&lt;br /&gt;
[[I2M_Conversion_Tool | Image-to-Mesh (I2M) Conversion Tool]]&lt;br /&gt;
&lt;br /&gt;
[[3D_Slicer_CBC3D_Extension | 3D Slicer CBC3D Extension ]]&lt;br /&gt;
&lt;br /&gt;
== Christos ==&lt;br /&gt;
&#039;&#039;&#039;[https://olddominion-my.sharepoint.com/:f:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/Papers All papers]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://olddominion-my.sharepoint.com/:f:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/presentations All presentations]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[https://www.overleaf.com/6438559258mdmsnbpffztx speculative meshing operations using tasks paper - overleaf]&lt;br /&gt;
&lt;br /&gt;
[https://www.overleaf.com/3459466599cnnfkhzmkczs Adaptive CDT3D paper - overleaf]&lt;br /&gt;
&lt;br /&gt;
[https://www.overleaf.com/8242192311zntgrtsphkvv Parallel Grid Adaptation Paper (UGAWG) - overleaf  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:Adaptive_Meshing_For_APBNRR]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1Fjt5PoDPXa715nOAjn0F4IJpdhscIGnlaQvweqFnB0U Adaptivity PPoSS slides]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1RDtQufImuo5J1pKioIYDuTWCeX1UtjKyx7kQ2i24Tmo/edit?usp=sharing  CNF HPC slides]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://git-community.cs.odu.edu/nikos/SciTech_2019/blob/draft/main.pdf Scitech Journal paper latest draft]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/cand_exam.pdf Candidacy exam (document)]&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:p:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/PhD_Candidacy_presentation.pptx  (presentation .pptx)]&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/PhD_Candidacy%20_presentation.pdf  (presentation pdf)]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Adaptive_CDT3D_Results | Metric Adaptive CDT3D results]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Argobots_and_CDT3D | Argobots and CDT3D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:4D_Predicates_Benchmark | 4D predicates benchmark]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:ACDT3D        | Metric Adaptive CDT3D Notes ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/paper.pdf Parallel Mesh Generation review paper]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://lbpw.larc.nasa.gov/ AIAA Sonic Boom Prediction Workshop (next in 2020)]&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D_SU2 | SU2 and grid requirements ]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Boundary_Layer_References | Boundary Layer References ]]&lt;br /&gt;
&lt;br /&gt;
[[External:Mesh_Generation_Articles_In_Journals | Some Mesh Generation Journal papers]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1txyCu6ibheH19hi3nZ10LgHm-WzglUrT5y0AaO__VYk/edit?usp=sharing  PhD Tentative Shedule]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://odu.box.com/s/sfkd5l3d9r5865qbsovx0eo6gwlaiask Poster IMR]&lt;br /&gt;
&lt;br /&gt;
[https://odu.box.com/s/1sok1edideblq4nctbufg79vud0oiu8f NIA presentation (September 2018) ] &lt;br /&gt;
&lt;br /&gt;
[[Internal:IMR_2018_Short_Course | IMR 2018 Short Course notes]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:ACDT3D_Scitech2018 | SciTech 2018]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:Machine_Learning_CDT3D |  Machine Learning and CDT3D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:AIAA_2018_CDT3D | CDT3D AIAA Aviation Paper ]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PODM4D_predicates | PODM4D fine grain concurrency benchmark ]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:AIAA_Geometry_and_Mesh_Generation_Workshop | Geometry and Mesh Generation Workshop ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D_RoadMap |CDT3D RoadMap]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Computational_Resources | High capacity Computational Resources ]]&lt;br /&gt;
&lt;br /&gt;
[[NDAM:Main | PODM 4D and Anisotropy ]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1jzTiohDA51VHXc65tfIFkmjrKM_8yQn7YYj2txEyhyU MPI PDR.PODM 16,000 cores data and other]&lt;br /&gt;
&lt;br /&gt;
== Kevin ==&lt;br /&gt;
[[Internal:PDR_AFLR |PDR.AFLR Stability and Scalability]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDR_AFLR_Progress_Report |PDR.AFLR Progress Report]]&lt;br /&gt;
&lt;br /&gt;
[[AFLR_Point_Spacing/Distribution_Function_Parameters | AFLR Point Spacing/Distribution Function Parameters]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDR_AFLR_Performance_Testing |PDR.AFLR Performance Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDR_AFLR_Performance_AIAA |AIAA PDR.AFLR Performance Data]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Report_Status |Report Status]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PsC_AFLR_Performance |PsC.AFLR Performance Data]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Next_Generation_Boundary_Layer |Next Generation Boundary Layer]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D_GPU_Smoothing | CDT3D GPU Smoothing]]&lt;br /&gt;
&lt;br /&gt;
== Polykarpos ==&lt;br /&gt;
[[PREMA Shared Memory]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:IMR_2018_Runtime_Systems | IMR 2018 Runtime Systems]]&lt;br /&gt;
&lt;br /&gt;
[[Intel Xeon Phi and High Bandwidth Memory]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Machine_Learning | CNF Machine Learning Project]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:ML_Data_Denoise | Track denoising with ML]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1rF3rElnBCsKR_Z_66nTCmMqSZa3b51mEzswiLz_3d3Q/edit?usp=sharing  CNF HPC Workshop Slides]&lt;br /&gt;
&lt;br /&gt;
[[PREMA SW4| SW4 Benchmark with PREMA]]&lt;br /&gt;
&lt;br /&gt;
[[PDR.PODM Distributed Memory| PDR.PODM.PREMA]]&lt;br /&gt;
&lt;br /&gt;
[https://www.overleaf.com/read/vgwrypshrkqp PREMA-Argobots Paper]&lt;br /&gt;
&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/g/personal/pthom001_odu_edu/EYiL4h5xKThJgjyvbsFbZe4BH_4pr3rR-9x-gvErpDaq3A?e=hdy7ii Heterogeneousarchitecturesforcomputationalintensiveapplications:Acost-effectivenessanalysis]&lt;br /&gt;
&lt;br /&gt;
Future Work&lt;br /&gt;
&lt;br /&gt;
[[Internal:TAPAS]]&lt;br /&gt;
&lt;br /&gt;
== Spiros ==&lt;br /&gt;
&#039;&#039;&#039;Image-To-Mesh Conversion Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:Tessellate_2D | Tessellate 2D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PODM_3D | PODM 3D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PODM_4D | PODM 4D]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BioInformatics Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:GPCD | GPCD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contrained Mesh Refinement Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D_GPU_Smoothing | CDT3D GPU Smoothing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CNF Related Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[CNF:CNF_Data_Generation | CNF Data Generation]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Monte_Carlo_Event_Generator_using_a_Tessellation | Monte Carlo Event Generator using a Tessellation]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Smart_LookUp_Table_Utilities | Smart LookUp Table Utilities]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:PartonsToNRRD | PartonsToNRRD]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Weighted_Mesh_To_Image | Weighted Mesh To Image]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:TetGen_CNF | TetGen CNF]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Utilities Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:Synthetical_Image_Data_Generator | Synthetical Image Data Generator]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:MeshIO | MeshIO]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDM_ND | PDM ND]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:GPU_Usage | GPU Usage]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reports&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[CNF:CNF_Adaptivity | CNF Adaptivity]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
===Conference Slides ===&lt;br /&gt;
[https://odu.box.com/s/vev5nqudpd5yq143xfq99y7b8uyf0j4e AI in Nuclear Physics 2020]&lt;br /&gt;
&lt;br /&gt;
=== Proposal Resources ===&lt;br /&gt;
[[Internal:NSF_PPOSS_Funded_Proposals]]&lt;br /&gt;
&lt;br /&gt;
===Notes ===&lt;br /&gt;
[[Internal:CNF_Workshop]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:CNF_HPC_Workshop_2019]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Kokkos_Tutorial_2020_02_19]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Intel_OneAPI_Tutorial_2020_02_20]]&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
[http://www.cs.odu.edu/crtc/internal/papers/O&#039;Connell_et_al._-_2018_-_Application_of_the_Dependency_Inversion_Principle_.pdf T-infinity: The Dependency Inversion Principle for Rapid and Sustainable Multidisciplinary Software Development]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-01927559  Meshless Voronoi on the GPU,  Nicolas Ray,Dmitry Sokolov,Sylvain Lefebvre,Bruno Lévy]&lt;br /&gt;
&lt;br /&gt;
[http://pages.saclay.inria.fr/frederic.alauzet/TetrahedronVI/Slides_Tetrahedron_VI/Thursday/Mike_Park_ugawg-tet-talk.pdf Democratizing Mesh Adaptation forComputational Fluid Dynamics Michael Park]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Hashing_Meshes]]&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
[https://www.youtube.com/watch?v=pn7IqhOEGpY Using Graphs for Unstructured Data (Keshav Pingali)]&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=RZ09uZs1ynA Big Data Brain Maps at Argonne National Laboratory (Bobby Kasthuri), ATPESC 2017]&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
http://livingreview.in.tum.de/welcome/&lt;br /&gt;
&lt;br /&gt;
=== CRTC lab Virtual meetings ===&lt;br /&gt;
* 2020.01.18 - Christos&lt;br /&gt;
:* Unified Approach for Speculative Operations, [https://docs.google.com/presentation/d/1haL6NVwZzRVG0W71KoWmqLKgxkf6to2sUsdTH5Xn4kw (presentation)], [https://olddominion-my.sharepoint.com/:f:/r/personal/ctsol001_odu_edu/Documents/Parallel_Operations?csf=1&amp;amp;web=1&amp;amp;e=hQ8rPg (shared directory)]&lt;br /&gt;
&lt;br /&gt;
* 2021.02.03 - Kevin &amp;amp; Spiros&lt;br /&gt;
:* Introduction to GPU Parallelism, [https://drive.google.com/file/d/1vW3VJXi04JB2N7XpVoNnXXSNv4i1Pnet/view?usp=sharing (presentation)]&lt;br /&gt;
&lt;br /&gt;
* 2021.02.10 - Kevin &amp;amp; Spiros&lt;br /&gt;
:* GPU Architecture, [https://drive.google.com/file/d/1LfDwsbdscSpTk3eBT74lfIlSyD-W_Zwh/view?usp=sharing (presentation)]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:Student_Reports&amp;diff=8451</id>
		<title>Internal:Student Reports</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:Student_Reports&amp;diff=8451"/>
		<updated>2021-04-14T21:17:08Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spiros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Eleni, Thomas , Angelos==&lt;br /&gt;
[[Internal:ReportCloud | Cloud Report]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Preprocess_Medical_Images |  Preprocessing of Medical Images]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Execution_And_Evaluation_Medical_Images |  Execution and Evaluation of Medical Imaging data]]&lt;br /&gt;
&lt;br /&gt;
== Angelos ==&lt;br /&gt;
&lt;br /&gt;
[[Internal:GPCD | GPCD]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:APBNRRExecutionStatus | APBNRR Execution Status]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PAPBNRRComparison | Pristine vs New PAPBNRR]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:APBNRRMachineLearning | APBNRR Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
[[Internal: SlicerExtensions | Slicer Extensions]]&lt;br /&gt;
&lt;br /&gt;
== Joi ==&lt;br /&gt;
[[Tasks | Tasks ]]&lt;br /&gt;
&lt;br /&gt;
[[I2M_Conversion_Tool | Image-to-Mesh (I2M) Conversion Tool]]&lt;br /&gt;
&lt;br /&gt;
[[3D_Slicer_CBC3D_Extension | 3D Slicer CBC3D Extension ]]&lt;br /&gt;
&lt;br /&gt;
== Christos ==&lt;br /&gt;
&#039;&#039;&#039;[https://olddominion-my.sharepoint.com/:f:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/Papers All papers]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://olddominion-my.sharepoint.com/:f:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/presentations All presentations]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[https://www.overleaf.com/6438559258mdmsnbpffztx speculative meshing operations using tasks paper - overleaf]&lt;br /&gt;
&lt;br /&gt;
[https://www.overleaf.com/3459466599cnnfkhzmkczs Adaptive CDT3D paper - overleaf]&lt;br /&gt;
&lt;br /&gt;
[https://www.overleaf.com/8242192311zntgrtsphkvv Parallel Grid Adaptation Paper (UGAWG) - overleaf  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:Adaptive_Meshing_For_APBNRR]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1Fjt5PoDPXa715nOAjn0F4IJpdhscIGnlaQvweqFnB0U Adaptivity PPoSS slides]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1RDtQufImuo5J1pKioIYDuTWCeX1UtjKyx7kQ2i24Tmo/edit?usp=sharing  CNF HPC slides]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://git-community.cs.odu.edu/nikos/SciTech_2019/blob/draft/main.pdf Scitech Journal paper latest draft]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/cand_exam.pdf Candidacy exam (document)]&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:p:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/PhD_Candidacy_presentation.pptx  (presentation .pptx)]&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/PhD_Candidacy%20_presentation.pdf  (presentation pdf)]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Adaptive_CDT3D_Results | Metric Adaptive CDT3D results]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Argobots_and_CDT3D | Argobots and CDT3D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:4D_Predicates_Benchmark | 4D predicates benchmark]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:ACDT3D        | Metric Adaptive CDT3D Notes ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/paper.pdf Parallel Mesh Generation review paper]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://lbpw.larc.nasa.gov/ AIAA Sonic Boom Prediction Workshop (next in 2020)]&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D_SU2 | SU2 and grid requirements ]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Boundary_Layer_References | Boundary Layer References ]]&lt;br /&gt;
&lt;br /&gt;
[[External:Mesh_Generation_Articles_In_Journals | Some Mesh Generation Journal papers]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1txyCu6ibheH19hi3nZ10LgHm-WzglUrT5y0AaO__VYk/edit?usp=sharing  PhD Tentative Shedule]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://odu.box.com/s/sfkd5l3d9r5865qbsovx0eo6gwlaiask Poster IMR]&lt;br /&gt;
&lt;br /&gt;
[https://odu.box.com/s/1sok1edideblq4nctbufg79vud0oiu8f NIA presentation (September 2018) ] &lt;br /&gt;
&lt;br /&gt;
[[Internal:IMR_2018_Short_Course | IMR 2018 Short Course notes]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:ACDT3D_Scitech2018 | SciTech 2018]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:Machine_Learning_CDT3D |  Machine Learning and CDT3D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:AIAA_2018_CDT3D | CDT3D AIAA Aviation Paper ]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PODM4D_predicates | PODM4D fine grain concurrency benchmark ]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:AIAA_Geometry_and_Mesh_Generation_Workshop | Geometry and Mesh Generation Workshop ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D_RoadMap |CDT3D RoadMap]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Computational_Resources | High capacity Computational Resources ]]&lt;br /&gt;
&lt;br /&gt;
[[NDAM:Main | PODM 4D and Anisotropy ]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1jzTiohDA51VHXc65tfIFkmjrKM_8yQn7YYj2txEyhyU MPI PDR.PODM 16,000 cores data and other]&lt;br /&gt;
&lt;br /&gt;
== Kevin ==&lt;br /&gt;
[[Internal:PDR_AFLR |PDR.AFLR Stability and Scalability]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDR_AFLR_Progress_Report |PDR.AFLR Progress Report]]&lt;br /&gt;
&lt;br /&gt;
[[AFLR_Point_Spacing/Distribution_Function_Parameters | AFLR Point Spacing/Distribution Function Parameters]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDR_AFLR_Performance_Testing |PDR.AFLR Performance Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDR_AFLR_Performance_AIAA |AIAA PDR.AFLR Performance Data]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Report_Status |Report Status]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PsC_AFLR_Performance |PsC.AFLR Performance Data]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Next_Generation_Boundary_Layer |Next Generation Boundary Layer]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D | CDT3D]]&lt;br /&gt;
&lt;br /&gt;
== Polykarpos ==&lt;br /&gt;
[[PREMA Shared Memory]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:IMR_2018_Runtime_Systems | IMR 2018 Runtime Systems]]&lt;br /&gt;
&lt;br /&gt;
[[Intel Xeon Phi and High Bandwidth Memory]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Machine_Learning | CNF Machine Learning Project]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:ML_Data_Denoise | Track denoising with ML]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1rF3rElnBCsKR_Z_66nTCmMqSZa3b51mEzswiLz_3d3Q/edit?usp=sharing  CNF HPC Workshop Slides]&lt;br /&gt;
&lt;br /&gt;
[[PREMA SW4| SW4 Benchmark with PREMA]]&lt;br /&gt;
&lt;br /&gt;
[[PDR.PODM Distributed Memory| PDR.PODM.PREMA]]&lt;br /&gt;
&lt;br /&gt;
[https://www.overleaf.com/read/vgwrypshrkqp PREMA-Argobots Paper]&lt;br /&gt;
&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/g/personal/pthom001_odu_edu/EYiL4h5xKThJgjyvbsFbZe4BH_4pr3rR-9x-gvErpDaq3A?e=hdy7ii Heterogeneousarchitecturesforcomputationalintensiveapplications:Acost-effectivenessanalysis]&lt;br /&gt;
&lt;br /&gt;
Future Work&lt;br /&gt;
&lt;br /&gt;
[[Internal:TAPAS]]&lt;br /&gt;
&lt;br /&gt;
== Spiros ==&lt;br /&gt;
&#039;&#039;&#039;Image-To-Mesh Conversion Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:Tessellate_2D | Tessellate 2D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PODM_3D | PODM 3D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PODM_4D | PODM 4D]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BioInformatics Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:GPCD | GPCD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contrained Mesh Refinement Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D_GPU_Smoothing | CDT3D GPU Smoothing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CNF Related Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[CNF:CNF_Data_Generation | CNF Data Generation]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Monte_Carlo_Event_Generator_using_a_Tessellation | Monte Carlo Event Generator using a Tessellation]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Smart_LookUp_Table_Utilities | Smart LookUp Table Utilities]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:PartonsToNRRD | PartonsToNRRD]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Weighted_Mesh_To_Image | Weighted Mesh To Image]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:TetGen_CNF | TetGen CNF]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Utilities Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:Synthetical_Image_Data_Generator | Synthetical Image Data Generator]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:MeshIO | MeshIO]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDM_ND | PDM ND]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:GPU_Usage | GPU Usage]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reports&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[CNF:CNF_Adaptivity | CNF Adaptivity]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
===Conference Slides ===&lt;br /&gt;
[https://odu.box.com/s/vev5nqudpd5yq143xfq99y7b8uyf0j4e AI in Nuclear Physics 2020]&lt;br /&gt;
&lt;br /&gt;
=== Proposal Resources ===&lt;br /&gt;
[[Internal:NSF_PPOSS_Funded_Proposals]]&lt;br /&gt;
&lt;br /&gt;
===Notes ===&lt;br /&gt;
[[Internal:CNF_Workshop]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:CNF_HPC_Workshop_2019]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Kokkos_Tutorial_2020_02_19]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Intel_OneAPI_Tutorial_2020_02_20]]&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
[http://www.cs.odu.edu/crtc/internal/papers/O&#039;Connell_et_al._-_2018_-_Application_of_the_Dependency_Inversion_Principle_.pdf T-infinity: The Dependency Inversion Principle for Rapid and Sustainable Multidisciplinary Software Development]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-01927559  Meshless Voronoi on the GPU,  Nicolas Ray,Dmitry Sokolov,Sylvain Lefebvre,Bruno Lévy]&lt;br /&gt;
&lt;br /&gt;
[http://pages.saclay.inria.fr/frederic.alauzet/TetrahedronVI/Slides_Tetrahedron_VI/Thursday/Mike_Park_ugawg-tet-talk.pdf Democratizing Mesh Adaptation forComputational Fluid Dynamics Michael Park]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Hashing_Meshes]]&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
[https://www.youtube.com/watch?v=pn7IqhOEGpY Using Graphs for Unstructured Data (Keshav Pingali)]&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=RZ09uZs1ynA Big Data Brain Maps at Argonne National Laboratory (Bobby Kasthuri), ATPESC 2017]&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
http://livingreview.in.tum.de/welcome/&lt;br /&gt;
&lt;br /&gt;
=== CRTC lab Virtual meetings ===&lt;br /&gt;
* 2020.01.18 - Christos&lt;br /&gt;
:* Unified Approach for Speculative Operations, [https://docs.google.com/presentation/d/1haL6NVwZzRVG0W71KoWmqLKgxkf6to2sUsdTH5Xn4kw (presentation)], [https://olddominion-my.sharepoint.com/:f:/r/personal/ctsol001_odu_edu/Documents/Parallel_Operations?csf=1&amp;amp;web=1&amp;amp;e=hQ8rPg (shared directory)]&lt;br /&gt;
&lt;br /&gt;
* 2021.02.03 - Kevin &amp;amp; Spiros&lt;br /&gt;
:* Introduction to GPU Parallelism, [https://drive.google.com/file/d/1vW3VJXi04JB2N7XpVoNnXXSNv4i1Pnet/view?usp=sharing (presentation)]&lt;br /&gt;
&lt;br /&gt;
* 2021.02.10 - Kevin &amp;amp; Spiros&lt;br /&gt;
:* GPU Architecture, [https://drive.google.com/file/d/1LfDwsbdscSpTk3eBT74lfIlSyD-W_Zwh/view?usp=sharing (presentation)]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:CDT3D&amp;diff=8450</id>
		<title>Internal:CDT3D</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:CDT3D&amp;diff=8450"/>
		<updated>2021-04-14T21:15:58Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: Spyridon97 moved page Internal:CDT3D to Internal:CDT3D GPU Smoothing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Internal:CDT3D GPU Smoothing]]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:CDT3D_GPU_Smoothing&amp;diff=8449</id>
		<title>Internal:CDT3D GPU Smoothing</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:CDT3D_GPU_Smoothing&amp;diff=8449"/>
		<updated>2021-04-14T21:15:58Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: Spyridon97 moved page Internal:CDT3D to Internal:CDT3D GPU Smoothing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Presentations=&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
&lt;br /&gt;
# [https://docs.google.com/presentation/d/1haL6NVwZzRVG0W71KoWmqLKgxkf6to2sUsdTH5Xn4kw/edit A Unified Approach for Parallel Mesh Operations] by Christos✔&lt;br /&gt;
# [https://docs.google.com/presentation/d/1LfDwsbdscSpTk3eBT74lfIlSyD-W_Zwh/edit GPU Architecture] ✔&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
&lt;br /&gt;
# Discrete Mesh Optimization using the paper: [https://project.inria.fr/imr27/files/2018/09/1003.pdf Discrete Mesh Optimization on GPU], The results below are using the tet_shape metric from the [http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=42FDC437179F12D08EB6C4F84FACD490?doi=10.1.1.483.5380&amp;amp;rep=rep1&amp;amp;type=pdf Verdict library]&lt;br /&gt;
## CPU version:&lt;br /&gt;
### Sequential:&lt;br /&gt;
#### Dihedral Quality of Discrete Vertex smoothing with Global Iterations:✔&amp;lt;br&amp;gt; [[File:Discrete_Vertex_Smoothing_Dihedral_Angle_Quality_Global_Iterations.png|1000px|Discrete_Vertex_Smoothing_Dihedral_Angle_Quality_Global_Iterations.png]]&lt;br /&gt;
#### Dihedral Quality of different smoothing methods:✔&amp;lt;br&amp;gt;[[File:Vertex_Smoothing_Methods_Dihedral_Angle_Quality.png|1000px|Vertex_Smoothing_Methods_Dihedral_Angle_Quality.png]]&lt;br /&gt;
#### Shape Quality of different smoothing methods:✔&amp;lt;br&amp;gt;[[File:Shape_Quality.png|1000px|Shape_Quality.png]]&lt;br /&gt;
#### Distribution of Smoothing Time Per Vertex:✔&amp;lt;br&amp;gt; [[File:Distribution_of_Smoothing_Time_Per_Vertex_CPU.png|1000px|Distribution_of_Smoothing_Time_Per_Vertex_CPU.png]]&lt;br /&gt;
### Parallel:&lt;br /&gt;
#### Dihedral Quality: Sequential vs Parallel:✔&amp;lt;br&amp;gt;[[File:Discrete_Vertex_Smoothing_Dihedral_Angle_Quality.png|1000px|Discrete_Vertex_Smoothing_Dihedral_Angle_Quality.png]]&lt;br /&gt;
#### Speed-Up:✔&amp;lt;br&amp;gt;[[File:Smoothing_Speed-up.png|750px|Smoothing_Speed-up.png]]&lt;br /&gt;
#### RollBacks✔:&amp;lt;br&amp;gt;[[File:Percentage_of_Rollbacks_per_Iteration.png|750px|Percentage_of_Rollbacks_per_Iteration.png]]&lt;br /&gt;
## GPU version:&lt;br /&gt;
### Sequential CPU-wise:&lt;br /&gt;
#### Distribution of Smoothing Time Per Vertex:✔&amp;lt;br&amp;gt; [[File:Distribution_of_Smoothing_Time_Per_Vertex_GPU.png|1000px|Distribution_of_Smoothing_Time_Per_Vertex_GPU.png]]&lt;br /&gt;
#### Version 1 (all points copied):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on GPU, grid(1) block(1)&lt;br /&gt;
###### Original point value on GPU, grid(1) block(1)&lt;br /&gt;
###### Grid creation on GPU, grid(1) block(1)&lt;br /&gt;
###### Gridpoint values using global values array(512) on GPU, grid(2, 2, 2) block(4, 4, 4)&lt;br /&gt;
###### Reduction using global values array(512) on GPU, grid(1) block(1)&lt;br /&gt;
##### Time total = 18.563 sec (90 sec on CPU sequential)&lt;br /&gt;
###### CPU = 0.79182 sec&lt;br /&gt;
###### Steps 1 &amp;amp; 2 = 8.31743 sec&lt;br /&gt;
###### Step 3 = 1.03768 sec&lt;br /&gt;
###### Step 4 = 6.55488 sec (per point)&lt;br /&gt;
###### Step 5 = 1.73327 sec&lt;br /&gt;
###### MemCopyH2D = 0.12792 sec&lt;br /&gt;
###### MemCopyD2H = 0.00002 sec&lt;br /&gt;
#### Version 2.0 (copy what you need):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values array(512) on GPU, grid(2, 2, 2) block(4, 4, 4)&lt;br /&gt;
###### Reduction using global values array(512) on GPU, grid(1) block(1)&lt;br /&gt;
#######!!! Note: access global memory multiple times !!!&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 15.06656 sec&lt;br /&gt;
###### CPU = 1.8857 sec (all cavities)&lt;br /&gt;
###### Step 3 = 6.43994 sec&lt;br /&gt;
###### Step 4 = 6.20552 sec&lt;br /&gt;
###### MemCopyH2D = 0.38211 sec&lt;br /&gt;
###### MemCopyD2H = 0.15329 sec&lt;br /&gt;
#### Version 2.1 (copy what you need):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values array(512) on GPU, grid(2, 2, 2) block(4, 4, 4)&lt;br /&gt;
###### Reduction using global values array(512) on GPU, grid(1) block(1)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 10.8227 sec&lt;br /&gt;
###### CPU = 1.8857 sec&lt;br /&gt;
###### Step 3 = 6.47006 sec&lt;br /&gt;
###### Step 4 = 1.74147 sec&lt;br /&gt;
###### MemCopyH2D = 0.37493 sec&lt;br /&gt;
###### MemCopyD2H = 0.15225 sec&lt;br /&gt;
#### Version 3 (copy what you need):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(8+8) and reduction for the max value and id of a block on GPU, grid(8) block(64)&lt;br /&gt;
###### Reduction using global values and ids arrays(8+8) on GPU, grid(1) block(8)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 9.17189 sec&lt;br /&gt;
###### CPU = 2.04448 sec&lt;br /&gt;
###### Step 3 = 6.40427 sec&lt;br /&gt;
###### Step 4 = 0.19378 sec&lt;br /&gt;
###### MemCopyH2D = 0.37604 sec&lt;br /&gt;
###### MemCopyD2H = 0.15332 sec&lt;br /&gt;
#### Version 3.1 (copy what you need):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 8.77189 sec&lt;br /&gt;
###### CPU = 2.04448 sec (Data Transformation = 0.194 sec)&lt;br /&gt;
###### Step 3 = 6.0427 sec&lt;br /&gt;
###### Step 4 = 0.19378 sec&lt;br /&gt;
###### MemCopyH2D = 0.37604 sec&lt;br /&gt;
###### MemCopyD2H = 0.15332 sec&lt;br /&gt;
#### Version 3.2 (allocate what you need at the beginning &amp;amp; copy what you need):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 8.34358 sec&lt;br /&gt;
###### CPU = 1.58702 sec&lt;br /&gt;
###### Step 3 = 6.02387s sec&lt;br /&gt;
###### Step 4 = 0.20711ms sec&lt;br /&gt;
###### MemCopyH2D = 0.37380 sec&lt;br /&gt;
###### MemCopyD2H = 0.15178 sec&lt;br /&gt;
#### Version 3.3 (allocate what you need at the beginning &amp;amp; copy what you need &amp;amp; and combine the GPU data):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 8.06576 sec&lt;br /&gt;
###### CPU = 1.466553 sec&lt;br /&gt;
###### Step 3 = 5.99690 sec&lt;br /&gt;
###### Step 4 = 0.20702 sec&lt;br /&gt;
###### MemCopyH2D = 0.25319 sec&lt;br /&gt;
###### MemCopyD2H = 0.078917 sec&lt;br /&gt;
#### Version 4 (perfom batching with 1 stream per cpu-thread):&lt;br /&gt;
##### For a batch of 4 vertices:&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 7.18418 sec&lt;br /&gt;
###### CPU = 0.946749 sec&lt;br /&gt;
###### Step 3 = 5.94023 sec&lt;br /&gt;
###### Step 4 = 0.20709 sec&lt;br /&gt;
###### MemCopyH2D = 0.069697 sec&lt;br /&gt;
###### MemCopyD2H = 0.020414 sec&lt;br /&gt;
##### Batch size:✔ &amp;lt;br&amp;gt;[[File:BATCH-SIZE.v4.png|750px|BATCH-SIZE.v4.png]]&lt;br /&gt;
#### Version 4.1 (perfom batching with #streams = batch-size within each cpu-thread):&lt;br /&gt;
##### For a batch of 4 vertices&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
#### Version 4.2 (perfom batching with #streams = &amp;lt;&amp;lt; batch-size within each cpu-thread):&lt;br /&gt;
##### For a batch of 12 vertices with 4 streams&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time:&lt;br /&gt;
###### lock time: 0.0190836 sec&lt;br /&gt;
###### findCavityCells time: 0.178939 sec&lt;br /&gt;
###### findUniqueVertices time: 0.215159 sec&lt;br /&gt;
###### dataCollection time: 0.187204 sec&lt;br /&gt;
###### boundingBox time: 0.0280833 sec&lt;br /&gt;
###### grid time: 0.00122939 sec&lt;br /&gt;
###### originalPointValue time: 0.12965 sec&lt;br /&gt;
###### assignNewPoint time: 0.00165265 sec&lt;br /&gt;
###### unlock time: 0.0117685 sec&lt;br /&gt;
###### Total Cpu time: 0.77277 sec&lt;br /&gt;
### Parallel CPU-wise:&lt;br /&gt;
#### Version 4:&lt;br /&gt;
##### Speed-Up:✔&amp;lt;br&amp;gt;[[File:Smoothing_Speed-up-heterogeneous.png|750px|Smoothing_Speed-up-heterogeneous.png]]&lt;br /&gt;
##### Rollbacks-Time-Per-Thread:✔&amp;lt;br&amp;gt;[[File:parallel.v4.png|750px|parallel.v4.png]]&lt;br /&gt;
##### Profiler: 4 cpu threads, 4 streams✔&amp;lt;br&amp;gt; [[File:profiler.v4.png|750px|profiler.v4.png]]&lt;br /&gt;
#### Version 4.1:&lt;br /&gt;
##### Profiler: 2 cpu threads, 2(copy)+8(computation) streams✔&amp;lt;br&amp;gt; [[File:profiler.v4.1.png|750px|profiler.v4.1.png]]&lt;br /&gt;
#### Version 4.2:&lt;br /&gt;
##### Rollbacks-Time-Per-Thread (#vertices = 28,217):✔&amp;lt;br&amp;gt;[[File:parallel.v4.2.png|750px|parallel.v4.2.png]]&lt;br /&gt;
##### Rollbacks-Time-Per-Thread (#vertices = 79,809):✔&amp;lt;br&amp;gt;[[File:parallel.v4.2-double-size.png|750px|parallel.v4.2-double-size.png]]&lt;br /&gt;
###### CPU (1 thread) 666 sec, CPU (32 threads) 28.29 sec&lt;br /&gt;
##### Profiler: 2 cpu threads, 2(copy)+8(computation) streams✔&amp;lt;br&amp;gt; [[File:profiler.v4.2.png|750px|profiler.v4.2.png]]&lt;br /&gt;
##### CPU Time Histogram 1 thread:✔&amp;lt;br&amp;gt;[[File:Histogram_of_CPU_Batch_Time_v4.2_threads=1.png|750px|Histogram_of_CPU_Batch_Time_v4.2_threads=1.png]]&lt;br /&gt;
##### CPU Time Histogram 2 threads:✔&amp;lt;br&amp;gt;[[File:Histogram_of_CPU_Batch_Time_v4.2_threads=2.png|750px|Histogram_of_CPU_Batch_Time_v4.2_threads=2.png]]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF_Data_Generation&amp;diff=8448</id>
		<title>CNF:CNF Data Generation</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF_Data_Generation&amp;diff=8448"/>
		<updated>2021-04-14T15:24:07Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/cnf-data-generation Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/CNF-Data-Generation Github]&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Add README.md file ✔&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Set up a MySQL server on Wahab for partons ✔&lt;br /&gt;
# Create a container with all the required dependencies ✔&lt;br /&gt;
# Split Mitch&#039;s Code into:&lt;br /&gt;
## A program that splits kinematic values for each core using:&lt;br /&gt;
### Uniform Data ✔&lt;br /&gt;
### Mesh Points ✔&lt;br /&gt;
### Splitting way&lt;br /&gt;
#### First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics. ✔&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### 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. ✔&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## A program that computes the Partons Data per core using the kinematics values and the models:&lt;br /&gt;
### Compton Form Factors ✔&lt;br /&gt;
### Cross-Sections (TODO)&lt;br /&gt;
## A program that merges the results of each core into one file ✔&lt;br /&gt;
## A program that updates the weights of a mesh using partonsData ✔&lt;br /&gt;
# Enable shared memory parallelization using CPU affinity, which means pinning a process to a specific core. ✔&lt;br /&gt;
# Create a script that runs partons in parallel using shared memory ✔&lt;br /&gt;
# Create a script that runs partons in parallel using distributed + shared memory ✔&lt;br /&gt;
# Speedup:&lt;br /&gt;
## [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Fix Axis ordering. ✔&lt;br /&gt;
# Generate Images with spacing. ✔&lt;br /&gt;
# Fix max connections problem with the same username on the database. ✔&lt;br /&gt;
# Parallelize split and merge steps ✔&lt;br /&gt;
# Update VTK to 9.0.1 inside the container. (TODO)&lt;br /&gt;
&lt;br /&gt;
== Spring 2021 ==&lt;br /&gt;
# Use meshes with double precision weights array ✔&lt;br /&gt;
# Add Mitch&#039;s code for the computation of error and addition of extra points under the required threshold ✔&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF_Data_Generation&amp;diff=8447</id>
		<title>CNF:CNF Data Generation</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF_Data_Generation&amp;diff=8447"/>
		<updated>2021-04-14T15:21:17Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/cnf-data-generation Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/CNF-Data-Generation Github]&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Add README.md file ✔&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Set up a MySQL server on Wahab for partons ✔&lt;br /&gt;
# Create a container with all the required dependencies ✔&lt;br /&gt;
# Split Mitch&#039;s Code into:&lt;br /&gt;
## A program that splits kinematic values for each core using:&lt;br /&gt;
### Uniform Data ✔&lt;br /&gt;
### Mesh Points ✔&lt;br /&gt;
### Splitting way&lt;br /&gt;
#### First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics. ✔&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### 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. ✔&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## A program that computes the Partons Data per core using the kinematics values and the models:&lt;br /&gt;
### Compton Form Factors ✔&lt;br /&gt;
### Cross-Sections (TODO)&lt;br /&gt;
## A program that merges the results of each core into one file ✔&lt;br /&gt;
## A program that updates the weights of a mesh using partonsData ✔&lt;br /&gt;
# Enable shared memory parallelization using CPU affinity, which means pinning a process to a specific core. ✔&lt;br /&gt;
# Create a script that runs partons in parallel using shared memory ✔&lt;br /&gt;
# Create a script that runs partons in parallel using distributed + shared memory ✔&lt;br /&gt;
# Speedup:&lt;br /&gt;
## [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Fix Axis ordering. ✔&lt;br /&gt;
# Generate Images with spacing. ✔&lt;br /&gt;
# Fix max connections problem with the same username on the database. ✔&lt;br /&gt;
# Parallelize split and merge steps ✔&lt;br /&gt;
# Update VTK to 9.0.1 inside the container. (TODO)&lt;br /&gt;
&lt;br /&gt;
== Spring 2021 ==&lt;br /&gt;
# Use meshes with double precision weights array ✔&lt;br /&gt;
# Add code for the computation of error and addition of extra points under the required threshold ✔&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:Weighted_Mesh_To_Image&amp;diff=8446</id>
		<title>CNF:Weighted Mesh To Image</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:Weighted_Mesh_To_Image&amp;diff=8446"/>
		<updated>2021-04-13T16:10:07Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Repository=&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/weightedmeshtoimage Gitlab]&lt;br /&gt;
&lt;br /&gt;
=Algorithms=&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
Create a new image using the weights of:&lt;br /&gt;
# k-nearest-neighbors points as values in a weighted-mean, were weight[i] = 1 / distance(pixel-point, neighbor-point[i]) ^ power.&lt;br /&gt;
# cell points as values in a weighted-mean, were weight[i] = 1 / distance(pixel-point, cell-point[i]) ^ power.&lt;br /&gt;
## Note: If the pixel point is not inside a cell, then the algorithm `1` will be used.&lt;br /&gt;
# the intersection set of k-nearest-neighbors points and cell points as values in a weighted-mean, were weight[i] = 1 / distance(pixel-point, intersection-point[i]) ^ power.&lt;br /&gt;
## Note 1: If the Intersection set is empty, then the algorithm `2` will be used.&lt;br /&gt;
## Note 2: If the pixel point is not inside a cell, then the algorithm `1` will be used.&lt;br /&gt;
# cell points as values in a weighted-mean, were weight[i] = interpolation-value[i] based on the location of each pixel point inside a cell. Interpolation-values are the result of the FindCell function.&lt;br /&gt;
## Note: If the pixel point is not inside a cell, then the algorithm `1` will be used.&lt;br /&gt;
&lt;br /&gt;
=Comparison Metrics=&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Let a and b be the sets of pixel values of input and output image, then the mean weighted pixel difference value is:&lt;br /&gt;
## [[File:MeanWeightedPixelValueFormula.png|300px|File:MeanWeightedPixelValueFormula.png]]&lt;br /&gt;
# Average Hausdorff Distance (itk filter)&lt;br /&gt;
# Similarity Index (itk filter)&lt;br /&gt;
&lt;br /&gt;
=Comparison Examples=&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Left: Image, Middle: Algorithm Result. Right: Mesh&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== KNN, number of points = 4, power = 1.5 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=400px&amp;gt;&lt;br /&gt;
File:NT-image.png&lt;br /&gt;
File:NT-a_1-n_4-p_1.5.png&lt;br /&gt;
File:NT-mesh.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Mean Weighted pixel value difference: 0.000395461&lt;br /&gt;
# Average Hausdorff Distance: 0.030885&lt;br /&gt;
# Similarity Index: 0.986463&lt;br /&gt;
&lt;br /&gt;
=== Cell Points, number of points = 4, power = 1.5 ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=400px&amp;gt;&lt;br /&gt;
File:NT-image.png&lt;br /&gt;
NT-a_2-n_4-p_1.5.png&lt;br /&gt;
File:NT-mesh.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Mean Weighted pixel value difference: 0.0002258&lt;br /&gt;
# Average Hausdorff Distance: 0.030885&lt;br /&gt;
# Similarity Index: 0.986463&lt;br /&gt;
&lt;br /&gt;
=== Intersection of KNN and Cell points, number of points = 5, power = 1.5 ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=400px&amp;gt;&lt;br /&gt;
File:NT-image.png&lt;br /&gt;
File:NT-a_3-n_5-p_1.5.png&lt;br /&gt;
File:NT-mesh.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Mean Weighted pixel value difference: 0.000273839&lt;br /&gt;
# Average Hausdorff Distance: 0.030885&lt;br /&gt;
# Similarity Index: 0.986463&lt;br /&gt;
&lt;br /&gt;
=== Cell points with interpolation weights, number of points = 4, power = 1.5 ===&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=400px&amp;gt;&lt;br /&gt;
File:NT-image.png&lt;br /&gt;
File:NT-a_4-n_4-p_1.5.png&lt;br /&gt;
File:NT-mesh.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Mean Weighted pixel value difference: 9.17551e-05&lt;br /&gt;
# Average Hausdorff Distance: 0.030885&lt;br /&gt;
# Similarity Index: 0.986463&lt;br /&gt;
&lt;br /&gt;
===Best Algorithm===&lt;br /&gt;
Evidently, the best algorithm both visually and by looking into the metrics is algorithm 4.&lt;br /&gt;
&lt;br /&gt;
=Examples of PODM with changed weights=&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=300px&amp;gt;&lt;br /&gt;
File:NT-image.png&lt;br /&gt;
File:NT-mesh.png&lt;br /&gt;
File:NT_140519,d=5,wl=0.07,me=1.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modifying Area based on X coordinate===&lt;br /&gt;
&#039;&#039;&#039;Algorithm 4 will be used&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
auto maxWeight = *std::max_element(pointWeights.begin(), pointWeights.end());&lt;br /&gt;
for (size_t i = 0; i &amp;lt; numberOfPoints; ++i) {&lt;br /&gt;
    if (points[i][0] &amp;gt;= 15 &amp;amp;&amp;amp; points[i][0] &amp;lt;= 20)&lt;br /&gt;
        pointWeights[i] = maxWeight + pointWeights[i];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=400px&amp;gt;&lt;br /&gt;
File:NT-x_15_20_image.png&lt;br /&gt;
File:NT-x_15_20_mesh.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modifying Area based on Y coordinate===&lt;br /&gt;
&#039;&#039;&#039;Algorithm 4 will be used&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
auto maxWeight = *std::max_element(pointWeights.begin(), pointWeights.end());&lt;br /&gt;
for (size_t i = 0; i &amp;lt; numberOfPoints; ++i) {&lt;br /&gt;
    if (points[i][1] &amp;gt;= 95 &amp;amp;&amp;amp; points[i][1] &amp;lt;= 101)&lt;br /&gt;
        pointWeights[i] = maxWeight + pointWeights[i];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=450px&amp;gt;&lt;br /&gt;
File:NT-y_95_101_image.png&lt;br /&gt;
File:NT-y_95_101_mesh.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modifying Area based on Z coordinate===&lt;br /&gt;
&#039;&#039;&#039;Algorithm 4 will be used&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
auto maxWeight = *std::max_element(pointWeights.begin(), pointWeights.end());&lt;br /&gt;
for (size_t i = 0; i &amp;lt; numberOfPoints; ++i) {&lt;br /&gt;
    if (points[i][2] &amp;gt;= 43 &amp;amp;&amp;amp; points[i][2] &amp;lt;= 53)&lt;br /&gt;
        pointWeights[i] = maxWeight + pointWeights[i];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=400px&amp;gt;&lt;br /&gt;
File:NT-z_43_53_image.png&lt;br /&gt;
File:NT-z_43_53_mesh.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:Smart_LookUp_Table_Utilities&amp;diff=8445</id>
		<title>CNF:Smart LookUp Table Utilities</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:Smart_LookUp_Table_Utilities&amp;diff=8445"/>
		<updated>2021-04-13T16:09:21Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Fall 2020 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/smartlookuptableutilities Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/SmartLookUpTableUtilities Github]&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Find Cell that includes a point (2D/3D)✔&lt;br /&gt;
# Get points of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get points weights of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get the volume of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get centroid coordinates of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get the interpolated weight of a point inside a cell (2D/3D/4D) ✔&lt;br /&gt;
&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Get neighbors of a cell (3D) ✔&lt;br /&gt;
&lt;br /&gt;
== Spring 2021 ==&lt;br /&gt;
# Use meshes with double precision weights array ✔&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:Smart_LookUp_Table_Utilities&amp;diff=8444</id>
		<title>CNF:Smart LookUp Table Utilities</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:Smart_LookUp_Table_Utilities&amp;diff=8444"/>
		<updated>2021-04-13T16:08:46Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/smartlookuptableutilities Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/SmartLookUpTableUtilities Github]&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Find Cell that includes a point (2D/3D)✔&lt;br /&gt;
# Get points of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get points weights of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get the volume of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get centroid coordinates of a cell (2D/3D/4D) ✔&lt;br /&gt;
# Get the interpolated weight of a point inside a cell (2D/3D/4D) ✔&lt;br /&gt;
&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Get neighbors of a cell (3D) ✔&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF_Data_Generation&amp;diff=8443</id>
		<title>CNF:CNF Data Generation</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF_Data_Generation&amp;diff=8443"/>
		<updated>2021-04-13T16:08:10Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/cnf-data-generation Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/CNF-Data-Generation Github]&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Add README.md file ✔&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Set up a MySQL server on Wahab for partons ✔&lt;br /&gt;
# Create a container with all the required dependencies ✔&lt;br /&gt;
# Split Mitch&#039;s Code into:&lt;br /&gt;
## A program that splits kinematic values for each core using:&lt;br /&gt;
### Uniform Data ✔&lt;br /&gt;
### Mesh Points ✔&lt;br /&gt;
### Splitting way&lt;br /&gt;
#### First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics. ✔&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### 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. ✔&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## A program that computes the Partons Data per core using the kinematics values and the models:&lt;br /&gt;
### Compton Form Factors ✔&lt;br /&gt;
### Cross-Sections (TODO)&lt;br /&gt;
## A program that merges the results of each core into one file ✔&lt;br /&gt;
## A program that updates the weights of a mesh using partonsData ✔&lt;br /&gt;
# Enable shared memory parallelization using CPU affinity, which means pinning a process to a specific core. ✔&lt;br /&gt;
# Create a script that runs partons in parallel using shared memory ✔&lt;br /&gt;
# Create a script that runs partons in parallel using distributed + shared memory ✔&lt;br /&gt;
# Speedup:&lt;br /&gt;
## [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Fix Axis ordering. ✔&lt;br /&gt;
# Generate Images with spacing. ✔&lt;br /&gt;
# Fix max connections problem with the same username on the database. ✔&lt;br /&gt;
# Parallelize split and merge steps ✔&lt;br /&gt;
# Update VTK to 9.0.1 inside the container. (TODO)&lt;br /&gt;
&lt;br /&gt;
== Spring 2021 ==&lt;br /&gt;
# Use meshes with double precision weights array ✔&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:Monte_Carlo_Event_Generator_using_a_Tessellation&amp;diff=8442</id>
		<title>CNF:Monte Carlo Event Generator using a Tessellation</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:Monte_Carlo_Event_Generator_using_a_Tessellation&amp;diff=8442"/>
		<updated>2021-04-13T16:07:53Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Fall 2020 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/mcegut Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/MCEGUT Github]&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Add README.md file ✔&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Organize Gagik&#039;s code ✔&lt;br /&gt;
# Add command-line interface ✔&lt;br /&gt;
# Template code for 2-3 dimensions using: &lt;br /&gt;
## [https://math.stackexchange.com/questions/18686/uniform-random-point-in-triangle Generate Random Points in a triangle] ✔&lt;br /&gt;
## [http://vcg.isti.cnr.it/jgt/tetra.htm Generate Random Points in a tetrahedron] ✔&lt;br /&gt;
# Replace linear search (O(n)) of tetrahedrons with given weight threshold with binary search (O(log(n))) ✔&lt;br /&gt;
# Parallelize code using OpenMP ✔&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Use Lebesque integral ✔&lt;br /&gt;
# Incorporate Smart Look-up table utilities ✔&lt;br /&gt;
# Extend Monte Carlo Event Generation to work with negative values ✔&lt;br /&gt;
# Generate randomly uniform points inside a cell using: ✔&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
== Spring 2021 ==&lt;br /&gt;
# Use meshes with double precision weights array ✔&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:Monte_Carlo_Event_Generator_using_a_Tessellation&amp;diff=8441</id>
		<title>CNF:Monte Carlo Event Generator using a Tessellation</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:Monte_Carlo_Event_Generator_using_a_Tessellation&amp;diff=8441"/>
		<updated>2021-04-13T16:07:12Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/mcegut Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/MCEGUT Github]&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Add README.md file ✔&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Organize Gagik&#039;s code ✔&lt;br /&gt;
# Add command-line interface ✔&lt;br /&gt;
# Template code for 2-3 dimensions using: &lt;br /&gt;
## [https://math.stackexchange.com/questions/18686/uniform-random-point-in-triangle Generate Random Points in a triangle] ✔&lt;br /&gt;
## [http://vcg.isti.cnr.it/jgt/tetra.htm Generate Random Points in a tetrahedron] ✔&lt;br /&gt;
# Replace linear search (O(n)) of tetrahedrons with given weight threshold with binary search (O(log(n))) ✔&lt;br /&gt;
# Parallelize code using OpenMP ✔&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Use Lebesque integral ✔&lt;br /&gt;
# Incorporate Smart Look-up table utilities ✔&lt;br /&gt;
# Extend Monte Carlo Event Generation to work with negative values ✔&lt;br /&gt;
# Generate randomly uniform points inside a cell using: ✔&lt;br /&gt;
## [https://www.researchgate.net/publication/275348534_Picking_a_Uniformly_Random_Point_from_an_Arbitrary_Simplex Picking a Uniformly Random Point from an Arbitrary Simplex]&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
[https://github.com/gavalian/clas12ai/blob/add-crtc-ml/cnf/main.cc Gagik&#039;s MC kernel]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF_Data_Generation&amp;diff=8440</id>
		<title>CNF:CNF Data Generation</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF_Data_Generation&amp;diff=8440"/>
		<updated>2021-04-13T16:06:25Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/cnf-data-generation Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/CNF-Data-Generation Github]&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Add README.md file ✔&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Set up a MySQL server on Wahab for partons ✔&lt;br /&gt;
# Create a container with all the required dependencies ✔&lt;br /&gt;
# Split Mitch&#039;s Code into:&lt;br /&gt;
## A program that splits kinematic values for each core using:&lt;br /&gt;
### Uniform Data ✔&lt;br /&gt;
### Mesh Points ✔&lt;br /&gt;
### Splitting way&lt;br /&gt;
#### First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics. ✔&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### 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. ✔&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## A program that computes the Partons Data per core using the kinematics values and the models:&lt;br /&gt;
### Compton Form Factors ✔&lt;br /&gt;
### Cross-Sections (TODO)&lt;br /&gt;
## A program that merges the results of each core into one file ✔&lt;br /&gt;
## A program that updates the weights of a mesh using partonsData ✔&lt;br /&gt;
# Enable shared memory parallelization using CPU affinity, which means pinning a process to a specific core. ✔&lt;br /&gt;
# Create a script that runs partons in parallel using shared memory ✔&lt;br /&gt;
# Create a script that runs partons in parallel using distributed + shared memory ✔&lt;br /&gt;
# Speedup:&lt;br /&gt;
## [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Fix Axis ordering. ✔&lt;br /&gt;
# Generate Images with spacing. ✔&lt;br /&gt;
# Fix max connections problem with the same username on the database. ✔&lt;br /&gt;
# Parallelize split and merge steps ✔&lt;br /&gt;
# Update VTK to 9.0.1 inside the container. (TODO)&lt;br /&gt;
&lt;br /&gt;
== Spring 2021 ==&lt;br /&gt;
# Accept double instead of float type weights array of meshes ✔&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:CNF_Data_Generation&amp;diff=8439</id>
		<title>CNF:CNF Data Generation</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:CNF_Data_Generation&amp;diff=8439"/>
		<updated>2021-04-13T16:05:28Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Fall 2020 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://github.com/spyridon97/CNF-Data-Generation Github]&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Add README.md file ✔&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Set up a MySQL server on Wahab for partons ✔&lt;br /&gt;
# Create a container with all the required dependencies ✔&lt;br /&gt;
# Split Mitch&#039;s Code into:&lt;br /&gt;
## A program that splits kinematic values for each core using:&lt;br /&gt;
### Uniform Data ✔&lt;br /&gt;
### Mesh Points ✔&lt;br /&gt;
### Splitting way&lt;br /&gt;
#### First implementation: split the kinematics dataset like. This way we create &#039;&#039;&#039;areas&#039;&#039;&#039; of kinematics. ✔&lt;br /&gt;
##### N0_0... N0_m-1, &lt;br /&gt;
##### N1_0... N1_m-1, &lt;br /&gt;
##### N2_0... N2_m-1, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### Nn-1_0... Nn-1_m-1. &lt;br /&gt;
#### 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. ✔&lt;br /&gt;
##### N0_0, N1_0, N2_0 .. Nn-1_0, &lt;br /&gt;
##### N0_1, N1_1, N2_1 .. Nn-1_1, &lt;br /&gt;
##### N0_2, N1_2, N2_2 .. Nn-1_2, &lt;br /&gt;
##### ..., &lt;br /&gt;
##### N0_m-1, N1_m-1, N2_m-1 .. Nn-1_m-1&lt;br /&gt;
## A program that computes the Partons Data per core using the kinematics values and the models:&lt;br /&gt;
### Compton Form Factors ✔&lt;br /&gt;
### Cross-Sections (TODO)&lt;br /&gt;
## A program that merges the results of each core into one file ✔&lt;br /&gt;
## A program that updates the weights of a mesh using partonsData ✔&lt;br /&gt;
# Enable shared memory parallelization using CPU affinity, which means pinning a process to a specific core. ✔&lt;br /&gt;
# Create a script that runs partons in parallel using shared memory ✔&lt;br /&gt;
# Create a script that runs partons in parallel using distributed + shared memory ✔&lt;br /&gt;
# Speedup:&lt;br /&gt;
## [[File:partons-speedup.png|500px|File:partons-speedup.png]]&lt;br /&gt;
&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Fix Axis ordering. ✔&lt;br /&gt;
# Generate Images with spacing. ✔&lt;br /&gt;
# Fix max connections problem with the same username on the database. ✔&lt;br /&gt;
# Parallelize split and merge steps ✔&lt;br /&gt;
# Update VTK to 9.0.1 inside the container. (TODO)&lt;br /&gt;
&lt;br /&gt;
== Spring 2021 ==&lt;br /&gt;
# Accept double instead of float type weights array of meshes ✔&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:Tessellate_2D&amp;diff=8438</id>
		<title>Internal:Tessellate 2D</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:Tessellate_2D&amp;diff=8438"/>
		<updated>2021-04-13T16:04:41Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Documentation=&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Write a proper README.md file✔&lt;br /&gt;
# Create a [https://crtc.cs.odu.edu/I2M_Suite User Manual] for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔&lt;br /&gt;
&lt;br /&gt;
=Execution Examples=&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Restructure repository of Tessellate 2D the same way as PODM3D&lt;br /&gt;
# Add binary file support&lt;br /&gt;
# Improve Text output&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Sizing function:&lt;br /&gt;
## Control min edge and max edge using a percentage of the diagonal ✔&lt;br /&gt;
## Find values of samples points using linear interpolation ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
# Accept double instead of float type precision images ✔&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:PODM_3D&amp;diff=8437</id>
		<title>Internal:PODM 3D</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:PODM_3D&amp;diff=8437"/>
		<updated>2021-04-13T16:04:33Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Documentation=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Read [https://crtc.cs.odu.edu/pub/papers/journal_56.pdf PODM3D] paper✔&lt;br /&gt;
# Read [https://crtc.cs.odu.edu/pub/papers/journal_58.pdf Guaranteed Quality Tetrahedral Delaunay Meshing for Medical Images] paper (Sect. 9) (TODO)&lt;br /&gt;
# Write a proper README.md file✔&lt;br /&gt;
# Add the [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] into the Appendix of the November Report✔&lt;br /&gt;
# Create [https://crtc.cs.odu.edu/Internal:CNF_Adaptivity CNF Adaptivity] Report&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create a [https://crtc.cs.odu.edu/CRTC_I2M User Manual] for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔&lt;br /&gt;
&lt;br /&gt;
=Execution Examples=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create meshes for the Medical Image Computing part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/Medical_Imaging_Example_Meshes Medical Imaging Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Create meshes for the Bioinformatics part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/Bioinformatics_Example_Meshes Bioinformatics Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Restructure repository of PODM3D based on Software engineering standards✔&lt;br /&gt;
# Decouple Args from PODM✔&lt;br /&gt;
# Create setArguments function✔&lt;br /&gt;
# Create setInputImage(ImageType::Pointer)✔&lt;br /&gt;
# Remove IOs from PODM✔&lt;br /&gt;
# Implement a sizing function that will work as an extra rule and it will use the points of the tetrahedron that is tested✔&lt;br /&gt;
## Create UML diagrams to understand the code and the Meshing Procedure in general✔&lt;br /&gt;
## Create a list of functions that need to be modified to implement the extra Rule ✔&lt;br /&gt;
## Modify the created list ([https://docs.google.com/spreadsheets/d/13M6qLRtS3wMH5B8vXwcqA-gP2b9p8QGwbhrn68VXoj0/edit#gid=0 Extra Rule sizing Function list]) of functions✔&lt;br /&gt;
## Create the following test sizing function to understand if modifications have been done correctly✔ &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
bool checkSizingFunction(double coordinatesOfTetrahedron**)&lt;br /&gt;
{&lt;br /&gt;
    double volume = volume(coordinatesOfTetrahedron);&lt;br /&gt;
    double* baryCenter = baryCenter(coordinatesOfTetrahedron)&lt;br /&gt;
    &lt;br /&gt;
    // if x axis &amp;lt;= 55 and volume of tetrahedron &amp;gt; 10&lt;br /&gt;
    if (baryCenter[0] &amp;lt;= 55 &amp;amp;&amp;amp; volume &amp;gt; 10)&lt;br /&gt;
       return true;&lt;br /&gt;
    else&lt;br /&gt;
       return false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
## Create the infrastructure to support Sizing Function pointer✔&lt;br /&gt;
## Incorporate Function Pointer to PODM by creating a setSizingFunction()✔&lt;br /&gt;
## Replace the test sizing function with the Adaptivity function that was created by Christos (The algorithm is described [https://crtc.cs.odu.edu/Internal:CNF_Adaptivity here])✔&lt;br /&gt;
### Understand that the current implementation supports negative weights✔&lt;br /&gt;
### Change the current implementation to use the minimum-maximum edge length of the element instead of its volume✔&lt;br /&gt;
### Identify an issue of checking sample points outside the image and solve it according to Christos&#039;s suggestions✔&lt;br /&gt;
# Separate the interface, the IOs and the filters from PODM✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create a general PODM driver✔&lt;br /&gt;
# Set a warning if delta &amp;gt; min-spacing * min-dimension-size / 5✔&lt;br /&gt;
# Set a default delta: ✔&lt;br /&gt;
## if sizing-function is off then default delta = min-spacing * min-dimension-size / 100 ✔&lt;br /&gt;
## if sizing-function is on then default delta = min-spacing * min-dimension-size / 20 ✔&lt;br /&gt;
# Remove labels array if there is only 1 label of interest ✔&lt;br /&gt;
# Print a warning if a label is not recovered✔&lt;br /&gt;
# Add Numa flag in CmakeLists.txt ✔&lt;br /&gt;
# Add binary file support ✔&lt;br /&gt;
# Improve Text output ✔&lt;br /&gt;
# Create label-filter for images ✔&lt;br /&gt;
## Preserve a set of labels of an image ✔&lt;br /&gt;
## Exclude a set of labels of an image ✔&lt;br /&gt;
# Remove redundant volume threshold checks that don&#039;t contribute anything to the meshing procedure ✔&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Libraries:&lt;br /&gt;
## Update ITK to v5.1.0 ✔&lt;br /&gt;
## Update VTK to v9.0.1 ✔&lt;br /&gt;
## Remove Boost from PODM (preserve it only for CGAL) ✔&lt;br /&gt;
# Save the label of a cell after its creation and Remove the expensive label recalculation in GetCleanMesh/GetCleanMeshParallel✔&lt;br /&gt;
# Compute Mesh Results in Parallel (TODO)&lt;br /&gt;
## Implement Parallel version of GetCleanMesh function ✔&lt;br /&gt;
## Testing ✔&lt;br /&gt;
## Speed-Up [[File:mesh-results-speed-up.png|500px|File:mesh-results-speed-up.png]] ✔&lt;br /&gt;
## Assigned as default ✔&lt;br /&gt;
# Upgrade the define NO_IO_WRITING&lt;br /&gt;
## Rename it to IO_WRITING ✔&lt;br /&gt;
## Create functions for loading and writing of auxiliary files ✔&lt;br /&gt;
## Create a compile flag for it, which will also enable the creation of the auxiliary files folder ✔&lt;br /&gt;
## Fix truncation error when loading box ✔&lt;br /&gt;
# Compute Box, Resized image and surface in Parallel ✔&lt;br /&gt;
## Implement Parallel version of ComputeBoxAndSurface function ✔&lt;br /&gt;
## Testing ✔&lt;br /&gt;
## Speed-Up [[File:box-surface-speed-up.png|500px|File:box-surface-speed-up.png]]✔&lt;br /&gt;
## Assigned as default ✔&lt;br /&gt;
# Sizing function:&lt;br /&gt;
## Control min edge and max edge using a percentage of the diagonal ✔&lt;br /&gt;
## Find values of samples points using linear interpolation ✔&lt;br /&gt;
&lt;br /&gt;
==Fall 2020==&lt;br /&gt;
# Fix shift of origin if delta not multiple of the spacing ✔&lt;br /&gt;
# Handle CNF images with spacing different than 1, and origin different than {0, 0, 0} ✔&lt;br /&gt;
## Upgrade Image Segmentation ✔&lt;br /&gt;
## Upgrade Sizing function ✔&lt;br /&gt;
## Upgrade Linear Interpolation ✔&lt;br /&gt;
# Change ImageSegmentation to create an image inside the requested grid domain ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
# [Christos] Addition of Extra points at the beginning of meshing ✔&lt;br /&gt;
# [Polykarpos] Loading and saving the state of PODM mesher ✔&lt;br /&gt;
# Load Dynamically Sizing Functions and their initialization as a shared Library using function pointers ✔&lt;br /&gt;
# Detect special cases of Christos and Polykarpos additions ✔&lt;br /&gt;
# Accept double instead of float type precision images ✔&lt;br /&gt;
# Fix PODM not working on Wahab (TODO)&lt;br /&gt;
# Remeshing by using a mesh instead of an image as input and background mesh (TODO)&lt;br /&gt;
# Create upscale-image-filter (TODO)&lt;br /&gt;
# Replace CGAL Predicates with: (TODO)&lt;br /&gt;
## Predicates Construction Kit:&lt;br /&gt;
### [https://hal.inria.fr/hal-01225202 Paper]&lt;br /&gt;
### [https://gforge.inria.fr/frs/?group_id=5833 Code]&lt;br /&gt;
### Benchmark: [https://crtc.cs.odu.edu/Internal:4D_Predicates_Benchmark PCK vs CGAL Predicates Benchmark]&lt;br /&gt;
### Note: see Geogram branch&lt;br /&gt;
## Adaptive Precision Floating-Point Arithmetic and Fast Robust Predicates for Computational Geometry:&lt;br /&gt;
### [https://www.cs.cmu.edu/afs/cs/project/quake/public/papers/robust-predicates.ps Paper]&lt;br /&gt;
### [https://www.cs.cmu.edu/afs/cs/project/quake/public/code/predicates.c Code]&lt;br /&gt;
# Smoothing (TODO)&lt;br /&gt;
## [https://hal.inria.fr/inria-00413248/document Feature preserving Delaunay mesh generation from 3D multi-material images]&lt;br /&gt;
## CGAL Sources: &lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html&lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3protectionimage3D&lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3HybridDomainExample&lt;br /&gt;
## PODM3D citations:&lt;br /&gt;
### [https://www-sciencedirect-com.proxy.lib.odu.edu/science/article/pii/S0021999101968160 Volume conserving smoothing for piecewise linear curves, surfaces, and triple lines]&lt;br /&gt;
### [https://www-sciencedirect-com.proxy.lib.odu.edu/science/article/pii/S0021999108004981 An anisotropic scale-invariant unstructured mesh generator suitable for volumetric imaging data]&lt;br /&gt;
### [https://pubmed.ncbi.nlm.nih.gov/20161102/ Variational generation of prismatic boundary-layer meshes for biomedical computing, International Journal for Numerical Methods]&lt;br /&gt;
## Prof, Andrey Suggestions:&lt;br /&gt;
### [https://people.eecs.berkeley.edu/~jrs/papers/stuffing.pdf Isosurface Stuffing: Fast Tetrahedral Meshes with Good Dihedral Angles]&lt;br /&gt;
### [https://imr.sandia.gov/_assets/documents/2019_IMR_Papers/3B.2-Chernikov.pdf CERTIFIED FUNCTIONS FOR MESH GENERATION]&lt;br /&gt;
### [https://crtc.cs.odu.edu/pub/papers/journal_49.pdf GENERALIZED INSERTION REGION GUIDES FOR DELAUNAY MESH REFINEMENT]&lt;br /&gt;
# Μultiple δ (TODO)&lt;br /&gt;
## Implement multiple δ (TODO)&lt;br /&gt;
## Use different δ values (possibly uniform based) according to the surface of each label of a segmented image (TODO)&lt;br /&gt;
# Produce the Voronoi Mesh out of the Delaunay (TODO)&lt;br /&gt;
## Check what TetGen does (TODO)&lt;br /&gt;
## Research conversion methods (TODO)&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:Tessellate_2D&amp;diff=8436</id>
		<title>Internal:Tessellate 2D</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:Tessellate_2D&amp;diff=8436"/>
		<updated>2021-04-13T16:03:59Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Documentation=&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Write a proper README.md file✔&lt;br /&gt;
# Create a [https://crtc.cs.odu.edu/I2M_Suite User Manual] for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔&lt;br /&gt;
&lt;br /&gt;
=Execution Examples=&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Restructure repository of Tessellate 2D the same way as PODM3D&lt;br /&gt;
# Add binary file support&lt;br /&gt;
# Improve Text output&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Sizing function:&lt;br /&gt;
## Control min edge and max edge using a percentage of the diagonal ✔&lt;br /&gt;
## Find values of samples points using linear interpolation ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
# Use double instead of float type precision images&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:Tessellate_2D&amp;diff=8435</id>
		<title>Internal:Tessellate 2D</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:Tessellate_2D&amp;diff=8435"/>
		<updated>2021-04-13T16:03:40Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Summer 2020 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Documentation=&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Write a proper README.md file✔&lt;br /&gt;
# Create a [https://crtc.cs.odu.edu/I2M_Suite User Manual] for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔&lt;br /&gt;
&lt;br /&gt;
=Execution Examples=&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Restructure repository of Tessellate 2D the same way as PODM3D&lt;br /&gt;
# Add binary file support&lt;br /&gt;
# Improve Text output&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Sizing function:&lt;br /&gt;
## Control min edge and max edge using a percentage of the diagonal ✔&lt;br /&gt;
## Find values of samples points using linear interpolation ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
Use double instead of float type precision images&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=CNF:PartonsToNRRD&amp;diff=8434</id>
		<title>CNF:PartonsToNRRD</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=CNF:PartonsToNRRD&amp;diff=8434"/>
		<updated>2021-04-13T16:02:51Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: Created page with &amp;quot;__TOC__  = Repository = # [https://git-community.cs.odu.edu/crtc/nuclear-physics/partonstonrrd/ Gitlab] # [https://github.com/spyridon97/PartonsToNRRD/ Github]  = Code = == Su...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
# [https://git-community.cs.odu.edu/crtc/nuclear-physics/partonstonrrd/ Gitlab]&lt;br /&gt;
# [https://github.com/spyridon97/PartonsToNRRD/ Github]&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
== Summer 2020 ==&lt;br /&gt;
# Create tool to generate NRRD images using partons data ✔&lt;br /&gt;
&lt;br /&gt;
== Fall 2020 ==&lt;br /&gt;
# Enable the creation of images using specific spacing ✔&lt;br /&gt;
&lt;br /&gt;
== Spring 2021 ==&lt;br /&gt;
# Create double instead of float type images ✔&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:Student_Reports&amp;diff=8433</id>
		<title>Internal:Student Reports</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:Student_Reports&amp;diff=8433"/>
		<updated>2021-04-13T15:57:46Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spiros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Eleni, Thomas , Angelos==&lt;br /&gt;
[[Internal:ReportCloud | Cloud Report]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Preprocess_Medical_Images |  Preprocessing of Medical Images]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Execution_And_Evaluation_Medical_Images |  Execution and Evaluation of Medical Imaging data]]&lt;br /&gt;
&lt;br /&gt;
== Angelos ==&lt;br /&gt;
&lt;br /&gt;
[[Internal:GPCD | GPCD]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:APBNRRExecutionStatus | APBNRR Execution Status]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PAPBNRRComparison | Pristine vs New PAPBNRR]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:APBNRRMachineLearning | APBNRR Machine Learning]]&lt;br /&gt;
&lt;br /&gt;
[[Internal: SlicerExtensions | Slicer Extensions]]&lt;br /&gt;
&lt;br /&gt;
== Joi ==&lt;br /&gt;
[[Tasks | Tasks ]]&lt;br /&gt;
&lt;br /&gt;
[[I2M_Conversion_Tool | Image-to-Mesh (I2M) Conversion Tool]]&lt;br /&gt;
&lt;br /&gt;
[[3D_Slicer_CBC3D_Extension | 3D Slicer CBC3D Extension ]]&lt;br /&gt;
&lt;br /&gt;
== Christos ==&lt;br /&gt;
&#039;&#039;&#039;[https://olddominion-my.sharepoint.com/:f:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/Papers All papers]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://olddominion-my.sharepoint.com/:f:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/presentations All presentations]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[https://www.overleaf.com/6438559258mdmsnbpffztx speculative meshing operations using tasks paper - overleaf]&lt;br /&gt;
&lt;br /&gt;
[https://www.overleaf.com/3459466599cnnfkhzmkczs Adaptive CDT3D paper - overleaf]&lt;br /&gt;
&lt;br /&gt;
[https://www.overleaf.com/8242192311zntgrtsphkvv Parallel Grid Adaptation Paper (UGAWG) - overleaf  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:Adaptive_Meshing_For_APBNRR]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1Fjt5PoDPXa715nOAjn0F4IJpdhscIGnlaQvweqFnB0U Adaptivity PPoSS slides]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1RDtQufImuo5J1pKioIYDuTWCeX1UtjKyx7kQ2i24Tmo/edit?usp=sharing  CNF HPC slides]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://git-community.cs.odu.edu/nikos/SciTech_2019/blob/draft/main.pdf Scitech Journal paper latest draft]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/cand_exam.pdf Candidacy exam (document)]&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:p:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/PhD_Candidacy_presentation.pptx  (presentation .pptx)]&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/PhD_Candidacy%20_presentation.pdf  (presentation pdf)]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Adaptive_CDT3D_Results | Metric Adaptive CDT3D results]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Argobots_and_CDT3D | Argobots and CDT3D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:4D_Predicates_Benchmark | 4D predicates benchmark]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Mesh Sizing for CNF data]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:ACDT3D        | Metric Adaptive CDT3D Notes ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/r/personal/nchrisoc_odu_edu/Documents/frombox/CRTC_Students/ChristosT/candidacy_exam/paper.pdf Parallel Mesh Generation review paper]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://lbpw.larc.nasa.gov/ AIAA Sonic Boom Prediction Workshop (next in 2020)]&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D_SU2 | SU2 and grid requirements ]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Boundary_Layer_References | Boundary Layer References ]]&lt;br /&gt;
&lt;br /&gt;
[[External:Mesh_Generation_Articles_In_Journals | Some Mesh Generation Journal papers]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1txyCu6ibheH19hi3nZ10LgHm-WzglUrT5y0AaO__VYk/edit?usp=sharing  PhD Tentative Shedule]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://odu.box.com/s/sfkd5l3d9r5865qbsovx0eo6gwlaiask Poster IMR]&lt;br /&gt;
&lt;br /&gt;
[https://odu.box.com/s/1sok1edideblq4nctbufg79vud0oiu8f NIA presentation (September 2018) ] &lt;br /&gt;
&lt;br /&gt;
[[Internal:IMR_2018_Short_Course | IMR 2018 Short Course notes]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:ACDT3D_Scitech2018 | SciTech 2018]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:Machine_Learning_CDT3D |  Machine Learning and CDT3D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:AIAA_2018_CDT3D | CDT3D AIAA Aviation Paper ]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PODM4D_predicates | PODM4D fine grain concurrency benchmark ]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:AIAA_Geometry_and_Mesh_Generation_Workshop | Geometry and Mesh Generation Workshop ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D_RoadMap |CDT3D RoadMap]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Computational_Resources | High capacity Computational Resources ]]&lt;br /&gt;
&lt;br /&gt;
[[NDAM:Main | PODM 4D and Anisotropy ]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1jzTiohDA51VHXc65tfIFkmjrKM_8yQn7YYj2txEyhyU MPI PDR.PODM 16,000 cores data and other]&lt;br /&gt;
&lt;br /&gt;
== Kevin ==&lt;br /&gt;
[[Internal:PDR_AFLR |PDR.AFLR Stability and Scalability]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDR_AFLR_Progress_Report |PDR.AFLR Progress Report]]&lt;br /&gt;
&lt;br /&gt;
[[AFLR_Point_Spacing/Distribution_Function_Parameters | AFLR Point Spacing/Distribution Function Parameters]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDR_AFLR_Performance_Testing |PDR.AFLR Performance Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDR_AFLR_Performance_AIAA |AIAA PDR.AFLR Performance Data]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Report_Status |Report Status]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PsC_AFLR_Performance |PsC.AFLR Performance Data]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Next_Generation_Boundary_Layer |Next Generation Boundary Layer]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D | CDT3D]]&lt;br /&gt;
&lt;br /&gt;
== Polykarpos ==&lt;br /&gt;
[[PREMA Shared Memory]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:IMR_2018_Runtime_Systems | IMR 2018 Runtime Systems]]&lt;br /&gt;
&lt;br /&gt;
[[Intel Xeon Phi and High Bandwidth Memory]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Machine_Learning | CNF Machine Learning Project]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:ML_Data_Denoise | Track denoising with ML]]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1rF3rElnBCsKR_Z_66nTCmMqSZa3b51mEzswiLz_3d3Q/edit?usp=sharing  CNF HPC Workshop Slides]&lt;br /&gt;
&lt;br /&gt;
[[PREMA SW4| SW4 Benchmark with PREMA]]&lt;br /&gt;
&lt;br /&gt;
[[PDR.PODM Distributed Memory| PDR.PODM.PREMA]]&lt;br /&gt;
&lt;br /&gt;
[https://www.overleaf.com/read/vgwrypshrkqp PREMA-Argobots Paper]&lt;br /&gt;
&lt;br /&gt;
[https://olddominion-my.sharepoint.com/:b:/g/personal/pthom001_odu_edu/EYiL4h5xKThJgjyvbsFbZe4BH_4pr3rR-9x-gvErpDaq3A?e=hdy7ii Heterogeneousarchitecturesforcomputationalintensiveapplications:Acost-effectivenessanalysis]&lt;br /&gt;
&lt;br /&gt;
Future Work&lt;br /&gt;
&lt;br /&gt;
[[Internal:TAPAS]]&lt;br /&gt;
&lt;br /&gt;
== Spiros ==&lt;br /&gt;
&#039;&#039;&#039;Image-To-Mesh Conversion Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:Tessellate_2D | Tessellate 2D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PODM_3D | PODM 3D]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:PODM_4D | PODM 4D]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BioInformatics Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:GPCD | GPCD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contrained Mesh Refinement Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:CDT3D | CDT3D]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CNF Related Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[CNF:CNF_Data_Generation | CNF Data Generation]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Monte_Carlo_Event_Generator_using_a_Tessellation | Monte Carlo Event Generator using a Tessellation]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Smart_LookUp_Table_Utilities | Smart LookUp Table Utilities]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:PartonsToNRRD | PartonsToNRRD]]&lt;br /&gt;
&lt;br /&gt;
[[CNF:Weighted_Mesh_To_Image | Weighted Mesh To Image]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:TetGen_CNF | TetGen CNF]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Utilities Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:Synthetical_Image_Data_Generator | Synthetical Image Data Generator]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:MeshIO | MeshIO]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other Projects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Internal:PDM_ND | PDM ND]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:GPU_Usage | GPU Usage]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reports&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[CNF:CNF_Adaptivity | CNF Adaptivity]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
===Conference Slides ===&lt;br /&gt;
[https://odu.box.com/s/vev5nqudpd5yq143xfq99y7b8uyf0j4e AI in Nuclear Physics 2020]&lt;br /&gt;
&lt;br /&gt;
=== Proposal Resources ===&lt;br /&gt;
[[Internal:NSF_PPOSS_Funded_Proposals]]&lt;br /&gt;
&lt;br /&gt;
===Notes ===&lt;br /&gt;
[[Internal:CNF_Workshop]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:CNF_HPC_Workshop_2019]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Kokkos_Tutorial_2020_02_19]]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Intel_OneAPI_Tutorial_2020_02_20]]&lt;br /&gt;
&lt;br /&gt;
=== Papers ===&lt;br /&gt;
[http://www.cs.odu.edu/crtc/internal/papers/O&#039;Connell_et_al._-_2018_-_Application_of_the_Dependency_Inversion_Principle_.pdf T-infinity: The Dependency Inversion Principle for Rapid and Sustainable Multidisciplinary Software Development]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-01927559  Meshless Voronoi on the GPU,  Nicolas Ray,Dmitry Sokolov,Sylvain Lefebvre,Bruno Lévy]&lt;br /&gt;
&lt;br /&gt;
[http://pages.saclay.inria.fr/frederic.alauzet/TetrahedronVI/Slides_Tetrahedron_VI/Thursday/Mike_Park_ugawg-tet-talk.pdf Democratizing Mesh Adaptation forComputational Fluid Dynamics Michael Park]&lt;br /&gt;
&lt;br /&gt;
[[Internal:Hashing_Meshes]]&lt;br /&gt;
&lt;br /&gt;
=== Videos ===&lt;br /&gt;
[https://www.youtube.com/watch?v=pn7IqhOEGpY Using Graphs for Unstructured Data (Keshav Pingali)]&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=RZ09uZs1ynA Big Data Brain Maps at Argonne National Laboratory (Bobby Kasthuri), ATPESC 2017]&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
http://livingreview.in.tum.de/welcome/&lt;br /&gt;
&lt;br /&gt;
=== CRTC lab Virtual meetings ===&lt;br /&gt;
* 2020.01.18 - Christos&lt;br /&gt;
:* Unified Approach for Speculative Operations, [https://docs.google.com/presentation/d/1haL6NVwZzRVG0W71KoWmqLKgxkf6to2sUsdTH5Xn4kw (presentation)], [https://olddominion-my.sharepoint.com/:f:/r/personal/ctsol001_odu_edu/Documents/Parallel_Operations?csf=1&amp;amp;web=1&amp;amp;e=hQ8rPg (shared directory)]&lt;br /&gt;
&lt;br /&gt;
* 2021.02.03 - Kevin &amp;amp; Spiros&lt;br /&gt;
:* Introduction to GPU Parallelism, [https://drive.google.com/file/d/1vW3VJXi04JB2N7XpVoNnXXSNv4i1Pnet/view?usp=sharing (presentation)]&lt;br /&gt;
&lt;br /&gt;
* 2021.02.10 - Kevin &amp;amp; Spiros&lt;br /&gt;
:* GPU Architecture, [https://drive.google.com/file/d/1LfDwsbdscSpTk3eBT74lfIlSyD-W_Zwh/view?usp=sharing (presentation)]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:PODM_3D&amp;diff=8432</id>
		<title>Internal:PODM 3D</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:PODM_3D&amp;diff=8432"/>
		<updated>2021-04-13T15:55:36Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Documentation=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Read [https://crtc.cs.odu.edu/pub/papers/journal_56.pdf PODM3D] paper✔&lt;br /&gt;
# Read [https://crtc.cs.odu.edu/pub/papers/journal_58.pdf Guaranteed Quality Tetrahedral Delaunay Meshing for Medical Images] paper (Sect. 9) (TODO)&lt;br /&gt;
# Write a proper README.md file✔&lt;br /&gt;
# Add the [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] into the Appendix of the November Report✔&lt;br /&gt;
# Create [https://crtc.cs.odu.edu/Internal:CNF_Adaptivity CNF Adaptivity] Report&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create a [https://crtc.cs.odu.edu/CRTC_I2M User Manual] for PODM 3D and Tessellate2D within the fields of Medical Image Computing and Computational Nuclear Femptography ✔&lt;br /&gt;
&lt;br /&gt;
=Execution Examples=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Create meshes for the Computational Nuclear Femtography part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/CNF_Example_Meshes CNF Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create meshes for the Medical Image Computing part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/Medical_Imaging_Example_Meshes Medical Imaging Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Create meshes for the Bioinformatics part of CRTC_I2M_Suite Documentation. [https://crtc.cs.odu.edu/Bioinformatics_Example_Meshes Bioinformatics Example Meshes] ✔&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
==Fall 2019==&lt;br /&gt;
# Restructure repository of PODM3D based on Software engineering standards✔&lt;br /&gt;
# Decouple Args from PODM✔&lt;br /&gt;
# Create setArguments function✔&lt;br /&gt;
# Create setInputImage(ImageType::Pointer)✔&lt;br /&gt;
# Remove IOs from PODM✔&lt;br /&gt;
# Implement a sizing function that will work as an extra rule and it will use the points of the tetrahedron that is tested✔&lt;br /&gt;
## Create UML diagrams to understand the code and the Meshing Procedure in general✔&lt;br /&gt;
## Create a list of functions that need to be modified to implement the extra Rule ✔&lt;br /&gt;
## Modify the created list ([https://docs.google.com/spreadsheets/d/13M6qLRtS3wMH5B8vXwcqA-gP2b9p8QGwbhrn68VXoj0/edit#gid=0 Extra Rule sizing Function list]) of functions✔&lt;br /&gt;
## Create the following test sizing function to understand if modifications have been done correctly✔ &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
bool checkSizingFunction(double coordinatesOfTetrahedron**)&lt;br /&gt;
{&lt;br /&gt;
    double volume = volume(coordinatesOfTetrahedron);&lt;br /&gt;
    double* baryCenter = baryCenter(coordinatesOfTetrahedron)&lt;br /&gt;
    &lt;br /&gt;
    // if x axis &amp;lt;= 55 and volume of tetrahedron &amp;gt; 10&lt;br /&gt;
    if (baryCenter[0] &amp;lt;= 55 &amp;amp;&amp;amp; volume &amp;gt; 10)&lt;br /&gt;
       return true;&lt;br /&gt;
    else&lt;br /&gt;
       return false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
## Create the infrastructure to support Sizing Function pointer✔&lt;br /&gt;
## Incorporate Function Pointer to PODM by creating a setSizingFunction()✔&lt;br /&gt;
## Replace the test sizing function with the Adaptivity function that was created by Christos (The algorithm is described [https://crtc.cs.odu.edu/Internal:CNF_Adaptivity here])✔&lt;br /&gt;
### Understand that the current implementation supports negative weights✔&lt;br /&gt;
### Change the current implementation to use the minimum-maximum edge length of the element instead of its volume✔&lt;br /&gt;
### Identify an issue of checking sample points outside the image and solve it according to Christos&#039;s suggestions✔&lt;br /&gt;
# Separate the interface, the IOs and the filters from PODM✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2020==&lt;br /&gt;
# Create a general PODM driver✔&lt;br /&gt;
# Set a warning if delta &amp;gt; min-spacing * min-dimension-size / 5✔&lt;br /&gt;
# Set a default delta: ✔&lt;br /&gt;
## if sizing-function is off then default delta = min-spacing * min-dimension-size / 100 ✔&lt;br /&gt;
## if sizing-function is on then default delta = min-spacing * min-dimension-size / 20 ✔&lt;br /&gt;
# Remove labels array if there is only 1 label of interest ✔&lt;br /&gt;
# Print a warning if a label is not recovered✔&lt;br /&gt;
# Add Numa flag in CmakeLists.txt ✔&lt;br /&gt;
# Add binary file support ✔&lt;br /&gt;
# Improve Text output ✔&lt;br /&gt;
# Create label-filter for images ✔&lt;br /&gt;
## Preserve a set of labels of an image ✔&lt;br /&gt;
## Exclude a set of labels of an image ✔&lt;br /&gt;
# Remove redundant volume threshold checks that don&#039;t contribute anything to the meshing procedure ✔&lt;br /&gt;
&lt;br /&gt;
==Summer 2020==&lt;br /&gt;
# Libraries:&lt;br /&gt;
## Update ITK to v5.1.0 ✔&lt;br /&gt;
## Update VTK to v9.0.1 ✔&lt;br /&gt;
## Remove Boost from PODM (preserve it only for CGAL) ✔&lt;br /&gt;
# Save the label of a cell after its creation and Remove the expensive label recalculation in GetCleanMesh/GetCleanMeshParallel✔&lt;br /&gt;
# Compute Mesh Results in Parallel (TODO)&lt;br /&gt;
## Implement Parallel version of GetCleanMesh function ✔&lt;br /&gt;
## Testing ✔&lt;br /&gt;
## Speed-Up [[File:mesh-results-speed-up.png|500px|File:mesh-results-speed-up.png]] ✔&lt;br /&gt;
## Assigned as default ✔&lt;br /&gt;
# Upgrade the define NO_IO_WRITING&lt;br /&gt;
## Rename it to IO_WRITING ✔&lt;br /&gt;
## Create functions for loading and writing of auxiliary files ✔&lt;br /&gt;
## Create a compile flag for it, which will also enable the creation of the auxiliary files folder ✔&lt;br /&gt;
## Fix truncation error when loading box ✔&lt;br /&gt;
# Compute Box, Resized image and surface in Parallel ✔&lt;br /&gt;
## Implement Parallel version of ComputeBoxAndSurface function ✔&lt;br /&gt;
## Testing ✔&lt;br /&gt;
## Speed-Up [[File:box-surface-speed-up.png|500px|File:box-surface-speed-up.png]]✔&lt;br /&gt;
## Assigned as default ✔&lt;br /&gt;
# Sizing function:&lt;br /&gt;
## Control min edge and max edge using a percentage of the diagonal ✔&lt;br /&gt;
## Find values of samples points using linear interpolation ✔&lt;br /&gt;
&lt;br /&gt;
==Fall 2020==&lt;br /&gt;
# Fix shift of origin if delta not multiple of the spacing ✔&lt;br /&gt;
# Handle CNF images with spacing different than 1, and origin different than {0, 0, 0} ✔&lt;br /&gt;
## Upgrade Image Segmentation ✔&lt;br /&gt;
## Upgrade Sizing function ✔&lt;br /&gt;
## Upgrade Linear Interpolation ✔&lt;br /&gt;
# Change ImageSegmentation to create an image inside the requested grid domain ✔&lt;br /&gt;
&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
# [Christos] Addition of Extra points at the beginning of meshing ✔&lt;br /&gt;
# [Polykarpos] Loading and saving the state of PODM mesher ✔&lt;br /&gt;
# Load Dynamically Sizing Functions and their initialization as a shared Library using function pointers ✔&lt;br /&gt;
# Detect special cases of Christos and Polykarpos additions ✔&lt;br /&gt;
# Convert PODM to accept double precision CNF images ✔&lt;br /&gt;
# Fix PODM not working on Wahab (TODO)&lt;br /&gt;
# Remeshing by using a mesh instead of an image as input and background mesh (TODO)&lt;br /&gt;
# Create upscale-image-filter (TODO)&lt;br /&gt;
# Replace CGAL Predicates with: (TODO)&lt;br /&gt;
## Predicates Construction Kit:&lt;br /&gt;
### [https://hal.inria.fr/hal-01225202 Paper]&lt;br /&gt;
### [https://gforge.inria.fr/frs/?group_id=5833 Code]&lt;br /&gt;
### Benchmark: [https://crtc.cs.odu.edu/Internal:4D_Predicates_Benchmark PCK vs CGAL Predicates Benchmark]&lt;br /&gt;
### Note: see Geogram branch&lt;br /&gt;
## Adaptive Precision Floating-Point Arithmetic and Fast Robust Predicates for Computational Geometry:&lt;br /&gt;
### [https://www.cs.cmu.edu/afs/cs/project/quake/public/papers/robust-predicates.ps Paper]&lt;br /&gt;
### [https://www.cs.cmu.edu/afs/cs/project/quake/public/code/predicates.c Code]&lt;br /&gt;
# Smoothing (TODO)&lt;br /&gt;
## [https://hal.inria.fr/inria-00413248/document Feature preserving Delaunay mesh generation from 3D multi-material images]&lt;br /&gt;
## CGAL Sources: &lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html&lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3protectionimage3D&lt;br /&gt;
### https://doc.cgal.org/latest/Mesh_3/index.html#fig__mesh3HybridDomainExample&lt;br /&gt;
## PODM3D citations:&lt;br /&gt;
### [https://www-sciencedirect-com.proxy.lib.odu.edu/science/article/pii/S0021999101968160 Volume conserving smoothing for piecewise linear curves, surfaces, and triple lines]&lt;br /&gt;
### [https://www-sciencedirect-com.proxy.lib.odu.edu/science/article/pii/S0021999108004981 An anisotropic scale-invariant unstructured mesh generator suitable for volumetric imaging data]&lt;br /&gt;
### [https://pubmed.ncbi.nlm.nih.gov/20161102/ Variational generation of prismatic boundary-layer meshes for biomedical computing, International Journal for Numerical Methods]&lt;br /&gt;
## Prof, Andrey Suggestions:&lt;br /&gt;
### [https://people.eecs.berkeley.edu/~jrs/papers/stuffing.pdf Isosurface Stuffing: Fast Tetrahedral Meshes with Good Dihedral Angles]&lt;br /&gt;
### [https://imr.sandia.gov/_assets/documents/2019_IMR_Papers/3B.2-Chernikov.pdf CERTIFIED FUNCTIONS FOR MESH GENERATION]&lt;br /&gt;
### [https://crtc.cs.odu.edu/pub/papers/journal_49.pdf GENERALIZED INSERTION REGION GUIDES FOR DELAUNAY MESH REFINEMENT]&lt;br /&gt;
# Μultiple δ (TODO)&lt;br /&gt;
## Implement multiple δ (TODO)&lt;br /&gt;
## Use different δ values (possibly uniform based) according to the surface of each label of a segmented image (TODO)&lt;br /&gt;
# Produce the Voronoi Mesh out of the Delaunay (TODO)&lt;br /&gt;
## Check what TetGen does (TODO)&lt;br /&gt;
## Research conversion methods (TODO)&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=Internal:CDT3D_GPU_Smoothing&amp;diff=8431</id>
		<title>Internal:CDT3D GPU Smoothing</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=Internal:CDT3D_GPU_Smoothing&amp;diff=8431"/>
		<updated>2021-04-13T03:05:27Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: /* Spring 2021 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Presentations=&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
&lt;br /&gt;
# [https://docs.google.com/presentation/d/1haL6NVwZzRVG0W71KoWmqLKgxkf6to2sUsdTH5Xn4kw/edit A Unified Approach for Parallel Mesh Operations] by Christos✔&lt;br /&gt;
# [https://docs.google.com/presentation/d/1LfDwsbdscSpTk3eBT74lfIlSyD-W_Zwh/edit GPU Architecture] ✔&lt;br /&gt;
&lt;br /&gt;
=Code=&lt;br /&gt;
==Spring 2021==&lt;br /&gt;
&lt;br /&gt;
# Discrete Mesh Optimization using the paper: [https://project.inria.fr/imr27/files/2018/09/1003.pdf Discrete Mesh Optimization on GPU], The results below are using the tet_shape metric from the [http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=42FDC437179F12D08EB6C4F84FACD490?doi=10.1.1.483.5380&amp;amp;rep=rep1&amp;amp;type=pdf Verdict library]&lt;br /&gt;
## CPU version:&lt;br /&gt;
### Sequential:&lt;br /&gt;
#### Dihedral Quality of Discrete Vertex smoothing with Global Iterations:✔&amp;lt;br&amp;gt; [[File:Discrete_Vertex_Smoothing_Dihedral_Angle_Quality_Global_Iterations.png|1000px|Discrete_Vertex_Smoothing_Dihedral_Angle_Quality_Global_Iterations.png]]&lt;br /&gt;
#### Dihedral Quality of different smoothing methods:✔&amp;lt;br&amp;gt;[[File:Vertex_Smoothing_Methods_Dihedral_Angle_Quality.png|1000px|Vertex_Smoothing_Methods_Dihedral_Angle_Quality.png]]&lt;br /&gt;
#### Shape Quality of different smoothing methods:✔&amp;lt;br&amp;gt;[[File:Shape_Quality.png|1000px|Shape_Quality.png]]&lt;br /&gt;
#### Distribution of Smoothing Time Per Vertex:✔&amp;lt;br&amp;gt; [[File:Distribution_of_Smoothing_Time_Per_Vertex_CPU.png|1000px|Distribution_of_Smoothing_Time_Per_Vertex_CPU.png]]&lt;br /&gt;
### Parallel:&lt;br /&gt;
#### Dihedral Quality: Sequential vs Parallel:✔&amp;lt;br&amp;gt;[[File:Discrete_Vertex_Smoothing_Dihedral_Angle_Quality.png|1000px|Discrete_Vertex_Smoothing_Dihedral_Angle_Quality.png]]&lt;br /&gt;
#### Speed-Up:✔&amp;lt;br&amp;gt;[[File:Smoothing_Speed-up.png|750px|Smoothing_Speed-up.png]]&lt;br /&gt;
#### RollBacks✔:&amp;lt;br&amp;gt;[[File:Percentage_of_Rollbacks_per_Iteration.png|750px|Percentage_of_Rollbacks_per_Iteration.png]]&lt;br /&gt;
## GPU version:&lt;br /&gt;
### Sequential CPU-wise:&lt;br /&gt;
#### Distribution of Smoothing Time Per Vertex:✔&amp;lt;br&amp;gt; [[File:Distribution_of_Smoothing_Time_Per_Vertex_GPU.png|1000px|Distribution_of_Smoothing_Time_Per_Vertex_GPU.png]]&lt;br /&gt;
#### Version 1 (all points copied):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on GPU, grid(1) block(1)&lt;br /&gt;
###### Original point value on GPU, grid(1) block(1)&lt;br /&gt;
###### Grid creation on GPU, grid(1) block(1)&lt;br /&gt;
###### Gridpoint values using global values array(512) on GPU, grid(2, 2, 2) block(4, 4, 4)&lt;br /&gt;
###### Reduction using global values array(512) on GPU, grid(1) block(1)&lt;br /&gt;
##### Time total = 18.563 sec (90 sec on CPU sequential)&lt;br /&gt;
###### CPU = 0.79182 sec&lt;br /&gt;
###### Steps 1 &amp;amp; 2 = 8.31743 sec&lt;br /&gt;
###### Step 3 = 1.03768 sec&lt;br /&gt;
###### Step 4 = 6.55488 sec (per point)&lt;br /&gt;
###### Step 5 = 1.73327 sec&lt;br /&gt;
###### MemCopyH2D = 0.12792 sec&lt;br /&gt;
###### MemCopyD2H = 0.00002 sec&lt;br /&gt;
#### Version 2.0 (copy what you need):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values array(512) on GPU, grid(2, 2, 2) block(4, 4, 4)&lt;br /&gt;
###### Reduction using global values array(512) on GPU, grid(1) block(1)&lt;br /&gt;
#######!!! Note: access global memory multiple times !!!&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 15.06656 sec&lt;br /&gt;
###### CPU = 1.8857 sec (all cavities)&lt;br /&gt;
###### Step 3 = 6.43994 sec&lt;br /&gt;
###### Step 4 = 6.20552 sec&lt;br /&gt;
###### MemCopyH2D = 0.38211 sec&lt;br /&gt;
###### MemCopyD2H = 0.15329 sec&lt;br /&gt;
#### Version 2.1 (copy what you need):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values array(512) on GPU, grid(2, 2, 2) block(4, 4, 4)&lt;br /&gt;
###### Reduction using global values array(512) on GPU, grid(1) block(1)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 10.8227 sec&lt;br /&gt;
###### CPU = 1.8857 sec&lt;br /&gt;
###### Step 3 = 6.47006 sec&lt;br /&gt;
###### Step 4 = 1.74147 sec&lt;br /&gt;
###### MemCopyH2D = 0.37493 sec&lt;br /&gt;
###### MemCopyD2H = 0.15225 sec&lt;br /&gt;
#### Version 3 (copy what you need):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(8+8) and reduction for the max value and id of a block on GPU, grid(8) block(64)&lt;br /&gt;
###### Reduction using global values and ids arrays(8+8) on GPU, grid(1) block(8)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 9.17189 sec&lt;br /&gt;
###### CPU = 2.04448 sec&lt;br /&gt;
###### Step 3 = 6.40427 sec&lt;br /&gt;
###### Step 4 = 0.19378 sec&lt;br /&gt;
###### MemCopyH2D = 0.37604 sec&lt;br /&gt;
###### MemCopyD2H = 0.15332 sec&lt;br /&gt;
#### Version 3.1 (copy what you need):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 8.77189 sec&lt;br /&gt;
###### CPU = 2.04448 sec (Data Transformation = 0.194 sec)&lt;br /&gt;
###### Step 3 = 6.0427 sec&lt;br /&gt;
###### Step 4 = 0.19378 sec&lt;br /&gt;
###### MemCopyH2D = 0.37604 sec&lt;br /&gt;
###### MemCopyD2H = 0.15332 sec&lt;br /&gt;
#### Version 3.2 (allocate what you need at the beginning &amp;amp; copy what you need):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 8.34358 sec&lt;br /&gt;
###### CPU = 1.58702 sec&lt;br /&gt;
###### Step 3 = 6.02387s sec&lt;br /&gt;
###### Step 4 = 0.20711ms sec&lt;br /&gt;
###### MemCopyH2D = 0.37380 sec&lt;br /&gt;
###### MemCopyD2H = 0.15178 sec&lt;br /&gt;
#### Version 3.3 (allocate what you need at the beginning &amp;amp; copy what you need &amp;amp; and combine the GPU data):&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 8.06576 sec&lt;br /&gt;
###### CPU = 1.466553 sec&lt;br /&gt;
###### Step 3 = 5.99690 sec&lt;br /&gt;
###### Step 4 = 0.20702 sec&lt;br /&gt;
###### MemCopyH2D = 0.25319 sec&lt;br /&gt;
###### MemCopyD2H = 0.078917 sec&lt;br /&gt;
#### Version 4 (perfom batching with 1 stream per cpu-thread):&lt;br /&gt;
##### For a batch of 4 vertices:&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time total = 7.18418 sec&lt;br /&gt;
###### CPU = 0.946749 sec&lt;br /&gt;
###### Step 3 = 5.94023 sec&lt;br /&gt;
###### Step 4 = 0.20709 sec&lt;br /&gt;
###### MemCopyH2D = 0.069697 sec&lt;br /&gt;
###### MemCopyD2H = 0.020414 sec&lt;br /&gt;
##### Batch size:✔ &amp;lt;br&amp;gt;[[File:BATCH-SIZE.v4.png|750px|BATCH-SIZE.v4.png]]&lt;br /&gt;
#### Version 4.1 (perfom batching with #streams = batch-size within each cpu-thread):&lt;br /&gt;
##### For a batch of 4 vertices&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
#### Version 4.2 (perfom batching with #streams = &amp;lt;&amp;lt; batch-size within each cpu-thread):&lt;br /&gt;
##### For a batch of 12 vertices with 4 streams&lt;br /&gt;
##### Steps:&lt;br /&gt;
###### Bounding box on CPU&lt;br /&gt;
###### Grid creation on CPU&lt;br /&gt;
###### Gridpoint values using global values and ids arrays(16+16) and reduction for the max value and id of a block on GPU, grid(16) block(32)&lt;br /&gt;
###### Reduction using global values and ids arrays(16+16) on GPU, grid(1) block(16)&lt;br /&gt;
###### Original point value on CPU concurrently with steps 3 &amp;amp; 4&lt;br /&gt;
##### Time:&lt;br /&gt;
###### lock time: 0.0190836 sec&lt;br /&gt;
###### findCavityCells time: 0.178939 sec&lt;br /&gt;
###### findUniqueVertices time: 0.215159 sec&lt;br /&gt;
###### dataCollection time: 0.187204 sec&lt;br /&gt;
###### boundingBox time: 0.0280833 sec&lt;br /&gt;
###### grid time: 0.00122939 sec&lt;br /&gt;
###### originalPointValue time: 0.12965 sec&lt;br /&gt;
###### assignNewPoint time: 0.00165265 sec&lt;br /&gt;
###### unlock time: 0.0117685 sec&lt;br /&gt;
###### Total Cpu time: 0.77277 sec&lt;br /&gt;
### Parallel CPU-wise:&lt;br /&gt;
#### Version 4:&lt;br /&gt;
##### Speed-Up:✔&amp;lt;br&amp;gt;[[File:Smoothing_Speed-up-heterogeneous.png|750px|Smoothing_Speed-up-heterogeneous.png]]&lt;br /&gt;
##### Rollbacks-Time-Per-Thread:✔&amp;lt;br&amp;gt;[[File:parallel.v4.png|750px|parallel.v4.png]]&lt;br /&gt;
##### Profiler: 4 cpu threads, 4 streams✔&amp;lt;br&amp;gt; [[File:profiler.v4.png|750px|profiler.v4.png]]&lt;br /&gt;
#### Version 4.1:&lt;br /&gt;
##### Profiler: 2 cpu threads, 2(copy)+8(computation) streams✔&amp;lt;br&amp;gt; [[File:profiler.v4.1.png|750px|profiler.v4.1.png]]&lt;br /&gt;
#### Version 4.2:&lt;br /&gt;
##### Rollbacks-Time-Per-Thread (#vertices = 28,217):✔&amp;lt;br&amp;gt;[[File:parallel.v4.2.png|750px|parallel.v4.2.png]]&lt;br /&gt;
##### Rollbacks-Time-Per-Thread (#vertices = 79,809):✔&amp;lt;br&amp;gt;[[File:parallel.v4.2-double-size.png|750px|parallel.v4.2-double-size.png]]&lt;br /&gt;
###### CPU (1 thread) 666 sec, CPU (32 threads) 28.29 sec&lt;br /&gt;
##### Profiler: 2 cpu threads, 2(copy)+8(computation) streams✔&amp;lt;br&amp;gt; [[File:profiler.v4.2.png|750px|profiler.v4.2.png]]&lt;br /&gt;
##### CPU Time Histogram 1 thread:✔&amp;lt;br&amp;gt;[[File:Histogram_of_CPU_Batch_Time_v4.2_threads=1.png|750px|Histogram_of_CPU_Batch_Time_v4.2_threads=1.png]]&lt;br /&gt;
##### CPU Time Histogram 2 threads:✔&amp;lt;br&amp;gt;[[File:Histogram_of_CPU_Batch_Time_v4.2_threads=2.png|750px|Histogram_of_CPU_Batch_Time_v4.2_threads=2.png]]&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
	<entry>
		<id>https://crtc.cs.odu.edu/index.php?title=File:Parallel.v4.2-double-size.png&amp;diff=8430</id>
		<title>File:Parallel.v4.2-double-size.png</title>
		<link rel="alternate" type="text/html" href="https://crtc.cs.odu.edu/index.php?title=File:Parallel.v4.2-double-size.png&amp;diff=8430"/>
		<updated>2021-04-13T01:40:49Z</updated>

		<summary type="html">&lt;p&gt;Spyridon97: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Spyridon97</name></author>
	</entry>
</feed>