Updates and Results Talks and Posters Advice Ideas Important Figures Write-Ups Outreach How-To Funding Opportunities GENETIS
  GENETIS, Last 2048 days  ELOG logo
New entries since:Sun Jun 28 11:24:04 2020
ID Date Author Subject
  243   Mon Jun 2 14:10:59 2025 Jacob WeilerBuilding Status 06/02/2025

We are almost to where we can start the physical building of the antenna! 

I've attached all the information I currently have regarding the building project. Some of it is messy work notes and some is well-structured.

I’ve attached the following files for the GENETIS building project:

  • Building Dump.txt 
    • My working notes that I used while trying to simulate the antenna in XFdtd (very messy) 
  • Building Dump of Useful Materials.txt
    • List of materials that I found regarding the building project like slides, elogs, etc.
  • Simulating Building Model.txt
    • A writeup I made describing my process for simulating the antenna in XFdtd 
  • Done with change materials.zip
    • Solidworks model of antenna

I also made a slide deck that contains the directory locations + has graphs HERE.

Attachment 1: Building_Dump_of_Useful_Materials.txt
Building Dump: 

For Initial Building Run: 
Generation 13, individual 84 seems to be result being used (this assumption is based on the fact that when trying to straighten the sides for building they used this individual)
	/fs/ess/PAS1960/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2022_12_29

Elog Links for first building runs:
	- Run Details: https://radiorm.physics.ohio-state.edu/elog/GENETIS/188
	- Run Results + Gain Patterns: https://radiorm.physics.ohio-state.edu/elog/GENETIS/189
	- Matching Circuit PCB: https://radiorm.physics.ohio-state.edu/elog/GENETIS/193
	- Matching Circuit Parts: https://radiorm.physics.ohio-state.edu/elog/GENETIS/191
	- Matching Circuit Schematic: https://radiorm.physics.ohio-state.edu/elog/GENETIS/230
	- Matching Circuit Initial Design: https://radiorm.physics.ohio-state.edu/elog/GENETIS/183
	- PoR Plots 1: https://radiorm.physics.ohio-state.edu/elog/GENETIS/194
	- PoR Plots 2: https://radiorm.physics.ohio-state.edu/elog/GENETIS/196
	- Straightened Sides 1: https://radiorm.physics.ohio-state.edu/elog/GENETIS/229
	- Straightened Sides 2: https://radiorm.physics.ohio-state.edu/elog/GENETIS/236
	- Engineering Call: https://docs.google.com/presentation/d/1Lo_6mFTmPbkToTrEeOpvznSdbxyPZexPag1qijTeYyM/edit?usp=sharing
	

At some point for some reason, another run seems to have been created for building with the crazy sides run here: 
/fs/ess/PAS1960/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2023_09_05_realized_curved_run

Top 5 vEffective Scores:
Value: 5.09897, Generation: 41, Individual: 44 (Seems to be this one, modified) 
Value: 5.07746, Generation: 37, Individual: 16
Value: 5.05508, Generation: 37, Individual: 5
Value: 5.04558, Generation: 38, Individual: 12
Value: 5.04026, Generation: 48, Individual: 5


GENETIS Useful Links: 
	- GENETIS Google Drive: https://drive.google.com/drive/folders/1iDamk46R2_oOLHtvsOg4jNy05mCiB7Sn?dmr=1&ec=wgc-drive-hero-goto
	- Onboarding Materials: https://radiorm.physics.ohio-state.edu/elog/GENETIS/41
	- Julie's Dissertation: https://radiorm.physics.ohio-state.edu/elog/Write-Ups/220404_161525/Julie_Rolla_Dissertation.pdf
	- Julie's Candidacy: https://as-phy-radiorm.asc.ohio-state.edu/elog/Write-Ups/44
	- ICRC Proceedings: https://arxiv.org/pdf/2112.00197
	- Phys Rev D Paper: https://journals.aps.org/prd/abstract/10.1103/PhysRevD.108.102002
	- ARA Loop GitHub: https://github.com/osu-particle-astrophysics/GENETIS-ARA
	- PUEO Loop GitHub: https://github.com/osu-particle-astrophysics/GENETIS_PUEO
	- Shared Code GitHub: https://github.com/osu-particle-astrophysics/Shared-Code
	- AraSim GitHub: https://github.com/ara-software/AraSim/tree/master
	- pueoSim GitHub: https://github.com/PUEOCollaboration/pueoSim
Attachment 2: Simulating_Building_Model.txt
Simulating Building Model

Getting the model we want to build from Solidworks into XF ready for simulations took a bit of work. Here are the steps and things I did to get it to finally work with materials and everything enabled (minus conductors in the coax cable).

General Instructions to setup the antenna the same as I did. Saving after each of these steps.

Getting out of Solidworks:
To get out of Solidworks, I used .step file under the assumption that it would carry the material data over into XF (this assumption was based on what I had read online, though I was looking at the wrong places for that information as I found out later). With this assumption, we spent time getting the materials correct in Solidworks before exporting out into the .step file. I spent considerable time double checking the materials in Solidworks to make sure that everything was defined correctly with at least good enough approximations of the materials to get a simulation working.

Material definitions:

    Shells: Plastic wrapped in Copper Foil, approximated by just having the whole shell as Copper

    Screws Connecting horizontal halves: ABS (PEEK Plastic)

    Supports Connecting vertical halves: ABS

    Other screws: Non-magnetic stainless steel (Passivated 18-8 Stainless Steel)

    Coax Cable:

        Dielectric: Foam Polyethylene (FPE)

        Inner Conductor: Solid Bare Copper Covered Aluminum

        Outer Conductor: Aluminum Tape

        Outer Braid: Tinned Copper

        Jacket: Polyethylene

    Everything else: Approximated as copper (not entirely sure if they are copper fully or if they are just wrapped with copper foil)

Importing into XFdtd:
After having the step file exported, I put the file onto OSC and opened a new XFdtd project. I then clicked the "Import -> Cad Models" to select my file and have it imported. I did not import in the material data as I found out it did not import in correctly to each part, so I ignored it and manually added the material definitions later.

I now have the model into XFdtd, but it’s rotated 90 degrees to be in the horizontal plane. This isn’t inherently bad, but I want my surrounding scripts to not have to be changed much so I rotate the model to have the wire pointing in the +z direction in XFdtd. Once I’ve done this, I right click on the Braid and Inner + Outer conductors in the coax cable and select something similar to "Do not include in meshing." This now makes sure that these are NOT in the simulation.

Then, I manually added material properties into XFdtd from definitions I looked up online for the electric + magnetic properties of:

    Copper

    Plastic (ABS)

    Foam Polyethylene (dielectric)

    Polyethylene

    Aluminum

    Stainless Steel

After creating these material definitions, I applied them to the appropriate parts.

Feed adjustments:
I want the feed to be in the same location as the coax cable for the best results, problem is that there are holes in the place where the coax cable would be split (which I disabled to prevent shorting!). So, I setup two copper pucks (not much thicker than the copper pieces that cover the tops by the feeds) to fill out the holes and make sure each half is connected to each corresponding side of the feed. After I place these in the correct location, I use the same 50-ohm feed setup script used in the GENETIS Vpol loop.

Now we have everything almost ready to simulate.

Simulation Setup:
There are various things needed to be done to setup the script, and while you can use the GUI, I’m not familiar enough with it so I just used the corresponding scripts in the GENETIS loop that would be needed before an XF simulation takes place. After I run this, we are now ready to simulate.

Running Simulation:
Again, not familiar with the GUI so I just used the GENETIS XFdtd job scripts and modified them for this purpose (which was just adjusting directories of outputs). Then I submitted the job and waited for it to complete (I believe it took around 8 min per simulation for this antenna).

Getting uan files:
I then opened the simulation and ran the same code used to output UANs as used in the GENETIS loop to output all 60 uan files at the frequencies we want.

Now you should have the files for the building model that was made in CAD!

Debugging Steps I took:
This took me a while over spring break, at least a lot longer than I thought it would.

    I found out that the material data from .step file does not translate as I had expected into XFdtd so I had to manually input the material data as shown above

    I found out that hiding a part in XF does NOT exclude it from simulation, you have to remove it from meshing or it still remains there

    I did compare the geometries between the as-evolved antenna and this building model, there are differences but they are slight. Overall they are very similar

    Removing the conductors for the coax cable is necessary as it will just short the two pieces (leading back to 2) which makes sense

Final:
After doing all this, I ended up getting what I deemed reasonable for the outputs for the building model after 28 runs in my 03_13_2025_manual.xf xf file on my user. Run28 is the run that I describe setting up above this text.

The material is not 1-1 with what will be built as I found it difficult to find exact electro-magnetic properties for all of these, so maybe the discrepancies in gain could be resolved through more rigorous definitions. It could actually technically make it worse, but maybe when this is physically built this will need to be done to get more accurate results to compare against.

Simulating both of these with higher statistics in AraSim resulted in the antennas actually performing worse than the base Vpol antenna, which stinks but it is both of the antennas not just one!

After (delayed) emails back and forth with Christian Miki from University of Hawaii, he found these same issues while he was looking at the model from CAD before I went through the XFdtd simulation steps.

Material Definitions in XF:
For critique, here are the material definitions I used in the XF simulation (using XF material definition windows). You should be able to look at them in the actual xf project I mentioned above in my user (full path in slide decks)

All setup with the following:
Type: Physical
Electric: Isotropic
Magnetic: Isotropic

Passivated 18-8 Stainless Steel:
Electric Tab
Type: Nondispersive
Entry Method: Normal
Good Conductor: Automatic
Conductivity: 1.1e+06 S/m
Relative Permittivity: 1
Infinite Dielectric Strength: Yes

Magnetic Tab
Type: Nondispersive
Entry Method: Normal
Conductivity: 0
Relative Permeability: 1.03

PEEK Plastic
Electric Tab
Type: Nondispersive
Entry Method: Loss Tangent
Good Conductor: Automatic
Relative Permittivity: 3.3
Loss Tangent: 0.003
Evaluation Frequency: 1 MHz
Infinite Dielectric Strength: Yes

Magnetic Tab
Type: Nondispersive
Entry Method: Normal
Conductivity: 0
Relative Permeability: 1

Foam Polyethylene
Electric Tab
Type: Nondispersive
Entry Method: Loss Tangent
Good Conductor: Automatic
Relative Permittivity: 1.6
Loss Tangent: 0.0004
Evaluation Frequency: 1 MHz
Infinite Dielectric Strength: Yes

Magnetic Tab
Type: Nondispersive
Entry Method: Normal
Conductivity: 0
Relative Permeability: 1

Polyethylene
Electric Tab
Type: Nondispersive
Entry Method: Loss Tangent
Good Conductor: Automatic
Relative Permittivity: 2.25
Loss Tangent: 0.0004
Evaluation Frequency: 1 MHz
Infinite Dielectric Strength: Yes

Magnetic Tab
Type: Nondispersive
Entry Method: Normal
Conductivity: 0
Relative Permeability: 1

ABS Plastic
Electric Tab
Type: Nondispersive
Entry Method: Loss Tangent
Good Conductor: Automatic
Relative Permittivity: 3.2
Loss Tangent: 0.005
Evaluation Frequency: 1 MHz
Infinite Dielectric Strength: Yes

Magnetic Tab
Type: Nondispersive
Entry Method: Normal
Conductivity: 0
Relative Permeability: 1

Copper Foil
Electric Tab
Type: Nondispersive
Entry Method: Normal
Good Conductor: Automatic
Conductivity: 5.96e+07 S/m
Relative Permittivity: 1
Infinite Dielectric Strength: Yes

Magnetic Tab
Type: Nondispersive
Entry Method: Normal
Conductivity: 0
Relative Permeability: 1
Attachment 3: Building_Dump.txt
Building Dump: 
Debugging Issues with Antenna model simulation:

Graphs to get (compared to Curved_Sides Antenna Run):
- Gain Plots 
	- Look at frequencies where dips. Could be due to: dielectric loss, mismatched impedance or structural changes
- Impedance Over Frequency Plots
	- Want impedance to be around 50 Ohm for resistive components and 0 for reactance at operational frequencies
- S11 Plots (Return Loss VS Frequency)
	- Look for where the S11 dips to determine where the antenna is resonant
- Total Efficiency Vs Frequencies
	- Drops at certain frequencies indicates problems! 
- VSWR vs Frequency
	- Lower VSWR means better matching 


in 03_13_2025_manual.xf:
Run1 = wrong material defs (deleted)
Run2 = glitched it 
Run3 = wrong material def again slightly changed tho
Run4 = wrong material, with conductor gone
Run5 = wrong material, with full wire gone
Run6 = right material, full wire gone
Run7 = right material, conductor gone
Run8 = right material, everything there feed shifted to side
Run9 = right material, feed in middle of conductor
Run10 = right material, wire gone feed offset reduced (putting closer to center). this failed because the top of the feed was disconnected
Run11 = right material, feed with correct max feed offset allowed, coax gone
Run12 = trying the same thing but with the coax gone with building the feed
Run13 = with coax cable back, feed shifted closer to middle (apparently forgot to save and it's just the same thing.. as run12) 
Run14 = adding pads and putting feed in the middle of the antenna, leave dielectric and jacket turned on
Run16 = pads, feed in middle, removing dielectric and jacket (-300 thing again.. not sure why) 
Run17 = same thing but ABS material changed and adjusted pucks a little
Run18 = same ABS material change but with only inner conductor removed (I am testing why I am getting -300..)
Run19 = removed supports, still  with pucks + only inner conductor removed  
Run20 = removing pucks, with conductor removed and new ABS material (no more -300 but very low again...) 
run21 = removed pucks, conductors(PLURAL) with new ABS Material 
run23 = back to just supports, offset feed new ABS Material
run24 = coax gone, og ABS material, with the offset feed closer to the middle
run25 = everything back to normal coax gone (something wrong)  
run26 = trying to fix the issue I'm seeing (FIXED) you have to uncheck that materials are included in meshing :/
run27 = actually removing the outer and inner conductors (yields worse gains!) 
run28 = moving to feed center w/ copper plates and with the jacket + dielectric

Seems like the wire in the middle should be plastic (or non-conducting)? based off document wangjie sent me
"If we 3D print the metal, Chi-Chih thought that we could keep them together through a plasic rod running
through the middle" (It's not!) 

maybe not, named LMR600 in solidworks which have the following material properties:
https://www.awcwire.com/lmr-cable/lmr-75-ohm-cable/lmr-600-75

screws connecting halves needed to be plastic

all other screws needed to be non-magnetic stainless steel

everything else is copper (?) 

Trying to change materials of the wire and supports (03_13_2025_building_sim_2.xf): still bad 
Trying again with same materials and putting feed down center of coax cable(03_13_2025_building_sim_3.xf): everything is -300 dBi :(
removing the copper middle part (03_13_2025_building_sim_4.xf): still bad
manually adding materials into XFdtd (03_13_2025_manual.xf): still bad, but different bad actually numbers-wise worse
	- Passivated 18-8 Stainless Steel
	- PEEK Plastic
	- Dielectric: Foam Polyethylene (FPE)
	- Inner Conductor: Solid Bare Copper Covered Aluminum
	- Outer Conductor: Aluminum Tape
	- Outer Braid: Tinned Copper
	- Jacket: Polyethylene
	- ABS Plastic
	- Copper foil

I believe the feed replaces the coax cable in the middle so I am removing the inner conductor and assuming that it will be the same as the feed. 

Dimensions of Curved Antenna (model based off this): (in cm for relevant parts) 
	- r1 = 3.20675
	- height1 = 39.3683
	- a1 = -0.0123505
	- b1 = 0.418171
	- r2 = 3.6116
	- height2 = 18.605
	- a2 = -0.0233028
	- b2 = 0.369081
	- Total height = 60.9733
Dimensions of Model in XF: (ignoring a's and b's as that's harder to measure..) (again in cm) (rough measurements in XF)
	- r1 = 3.7
	- h1 = 33.7441
	- r2 = 3.4
	- h2 = 18.71
	- total height = 55.45 (no cable) 60.6459 (including cable)

Reference run XF settings: 

- Removed the wire in the middle that was connecting the two sides: no difference (need to redo with it actually deleted + having the top plates copper) (03_11_2025_building_sim_1.xf)
- Removed middle wire AGAIN (03_13_2025_building_sim_0.xf): no difference, same issue
- Removed Supports and simulated(03_12_2025_building_sim_0.xf): This seems to have fixed the issue I'm seeing, so either the supports or the wire are shorting the antenna (or both!)
- Removed Supports ONLY(03_13_2025_building_sim_1.xf): still happening, though less extreme

For Initial Building Run: 
Generation 13, individual 84 seems to be result being used (this assumption is based on the fact that when trying to straighten the sides for building they used this individual)
	/fs/ess/PAS1960/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2022_12_29
 
Elog Links for first building runs:
	- Run Details: https://radiorm.physics.ohio-state.edu/elog/GENETIS/188
	- Run Results + Gain Patterns: https://radiorm.physics.ohio-state.edu/elog/GENETIS/189
	- Matching Circuit PCB: https://radiorm.physics.ohio-state.edu/elog/GENETIS/193
	- Matching Circuit Parts: https://radiorm.physics.ohio-state.edu/elog/GENETIS/191
	- Matching Circuit Schematic: https://radiorm.physics.ohio-state.edu/elog/GENETIS/230
	- Matching Circuit Initial Design: https://radiorm.physics.ohio-state.edu/elog/GENETIS/183
	- PoR Plots 1: https://radiorm.physics.ohio-state.edu/elog/GENETIS/194
	- PoR Plots 2: https://radiorm.physics.ohio-state.edu/elog/GENETIS/196
	- Straightened Sides 1: https://radiorm.physics.ohio-state.edu/elog/GENETIS/229
	- Straightened Sides 2: https://radiorm.physics.ohio-state.edu/elog/GENETIS/236
	

At some point, another run seems to have been created for building with the crazy sides run here with REALIZED GAIN: 
/fs/ess/PAS1960/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2023_09_05_realized_curved_run

- Run is using the same freq of interest as what we currently use!!

Top 5 vEffective Scores of Realized Gain run:
Value: 5.09897, Generation: 41, Individual: 44 (Seems to be this one, modified) 
Value: 5.07746, Generation: 37, Individual: 16
Value: 5.05508, Generation: 37, Individual: 5
Value: 5.04558, Generation: 38, Individual: 12
Value: 5.04026, Generation: 48, Individual: 5


GENETIS Useful Links: 
	- GENETIS Google Drive: https://drive.google.com/drive/folders/1iDamk46R2_oOLHtvsOg4jNy05mCiB7Sn?dmr=1&ec=wgc-drive-hero-goto
	- Onboarding Materials: https://radiorm.physics.ohio-state.edu/elog/GENETIS/41
	- Julie's Dissertation: https://radiorm.physics.ohio-state.edu/elog/Write-Ups/220404_161525/Julie_Rolla_Dissertation.pdf
	- Julie's Candidacy: https://as-phy-radiorm.asc.ohio-state.edu/elog/Write-Ups/44
	- ICRC Proceedings: https://arxiv.org/pdf/2112.00197
	- Phys Rev D Paper: https://journals.aps.org/prd/abstract/10.1103/PhysRevD.108.102002
	- ARA Loop GitHub: https://github.com/osu-particle-astrophysics/GENETIS-ARA
	- PUEO Loop GitHub: https://github.com/osu-particle-astrophysics/GENETIS_PUEO
	- Shared Code GitHub: https://github.com/osu-particle-astrophysics/Shared-Code
	- AraSim GitHub: https://github.com/ara-software/AraSim/tree/master
	- pueoSim GitHub: https://github.com/PUEOCollaboration/pueoSim
Attachment 4: done_with_change_materials.zip
  242   Sun Oct 20 13:11:09 2024 Dylan WellsOSU Physics Scholarship Opportunities

Here are some scholarships available to physics majors I've been lucky enough to receive throughout undergrad that allowed me to work on this project unpaid without needing supplemental income from a separate job or loans. 

1. OSU Arts and Sciences Merit Scholarship Pooled Application 

  • 500 word personal statement
  • 1 letter of recommendation from a faculty member (Amy wrote mine)
  • Varying amounts awarded (I got the $3,300 David and Velva Zarley Scholarship)
  • Can be used for any education related expensed (tution, rent, food, ...)

2. James L. Smith Scholarship for Physics Majors

  • 3 short essays (~200 words)
  • Probably varying amounts (I got $4,000)
  • Can be used for any education related expensed (tution, rent, food, ...)

3. Physics Class Awards 

  • No application, chosen by department (just get good grades, honors might help. I didn't really talk to any of my professors or go to office hours, so milage might vary there)
  • Freshman: $50, Sophomore: $250, Junior: $500, Senior: $?
  • Can be used for any education related expensed (tution, rent, food, ...)

4. OSU Scholarship Universe

  • A couple ~500 word essay
  • Very few awarded, I've applied twice: $1,000 the first time and completely ghosted the second
  • Can be used for any education related expensed (tution, rent, food, ...)

5. Licking County Foundation (If anyone is from licking county, I HIGHLY RECOMMEND APPLYNG TO THIS. I think there are similar ones for other counties) 

  • ~500 word essay
  • Varying awards (I've applied 3 times and gotten $2,375, $5,000, and $7,500) 
  • Can be used for any education related expensed (tution, rent, food, ...)

 

Here is a link to a google drive with all my winning scholarship essays:

https://drive.google.com/drive/folders/1qJKpBf4by9wlReU5l_XjxjVsDIfXR4Jc

 

  241   Mon Oct 7 15:35:01 2024 Dylan WellsTemplate Run Results Slide Deck

Copy this slide deck to use when presenting on run updates!

https://docs.google.com/presentation/d/1Tk-B1QbFTP_5pQZovfn0_wbTswZTmOrJURpi374xJWo/edit?usp=sharing

  240   Tue May 21 09:55:57 2024 Jacob WeilerAraSim CSE Spring 2024 Work

# AraSim CSE Spring 2024 Work

## Goals 
The main goal was to get a working multithreaded version of the AraSim codebase working. Doing this, the hope was to learn how to multithread the code and get it in a good place to hopefully also integrate GPU's at a later date.

## Where is it at currently? 
A bulk of the work done was to functionalize the Connect_Interaction_Detector_V2 to allow for multithreading and to cleanup codebase. 

### Going through code added/changed
Helper functions for multiple parts of code. They went through and split it up into multiple parts. Putting line numbers when needed

Part 1: Clearning Antenna Data
Part 2: Determine gain channel
Part 3: solve ray tracing (Not Done)
Part 4: Process Ray Tracing Solution (Not Done)
Part 5: Calculate Signal Factors (Not Done)
Part 6: Calculate Antenna Gain Factors (Not Done)
Part 7: Process Frequency Domain Signal
Part 8A: Process Neutrino Events. Lines 908 - 1208 (Not Done)
Part 8B: Process Arbitrary Events. Lines 1209 - 1475 
Part 8C: Process Simple Pulser Simulation. Lines 1478 - 1747 (Not Done)
Part 8D: Process PVA Pulser Simulation. Lines 1751 - 2110 (Not Done)
Part 8E: Process Calpulser Event. Lines 2113 - 2445
Part 9A: Process Noise. Lines 2593 - 2955
Part 9B: Process Trigger and Mimic Waveforms. Lines 2994 - 3624

## What still needs to be done? 
- Multithreading still isn't working, multiple threads are writing data to the same place causing the program to crash. This need to be resolved to at least have a working prototype. 

- I believe for multithreading we need to mark explicitly where file/data writing is happening to be able to adjust to make thread-safe

- Double checking that new functions are passing variables in the correct way. The CSE students had this has a slight fear. 

- Some helper functions are still not completed (3-6, 8A, 8C, 8D) 

- Current completed parts of code are all in separate branches and need to be merged after double checking that variable passing is correct

  239   Fri Sep 1 09:16:30 2023 Alex MCurved Run With Realized Gain

We are beginning a new run with several improvements to the ARA VPol loop to try to evolve antennas that are optimally matched just by their geometry. To do this, we are evolving with the RealizedGain instead of just Gain in the Xmacros (thus taking into account impedance mismatch). We also have the speed up that parallelizes the AraSim jobs on each run. Attached is the run_details.txt file, but the GA parameters are subject to change. Here is what they are to begin:

We have a population size of 50 individuals per generation.

Selection operators (NUMBER selected by each):

  • Roulette: 10
  • Tournamente: 10
  • Rank: 30

Genetic Operators (NUMBER generated by each):

  • Reproduction: 6
  • Crossover: 36
  • Immigration: 8
  • Mutation: 2
    • Sigma: 5%

 

Attachment 1: run_details_curved_realized.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2023_08_30_realized_curved'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100			## number of generations (after initial) to run through
NPOP=50				## number of individuals per generation; please keep this value below 99
Seeds=5			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=1500			## Number of Neutrinos Thrown in AraSim   
exp=18				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
RADIUS=0			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=0			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=0				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=1			## If 1, evolve curved sides. If 0, sides are straight
A=0				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=1 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=6			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=36			## Number (not fraction!) of individuals formed through crossover
MUTATION=2			## Probability of mutation (divided by 100)
SIGMA=5				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=10			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=10			## Percent of individuals selected through tournament (divided by 10)
RANK=30				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)
ParallelAra=1 ## Sets whether AraSim is being run on multiple threads or not

  238   Mon Aug 21 15:47:13 2023 AmyOSC license agreement to be able to use XF

Attached is the license agreement that each person should sign to be able to use XF on OSC.  You can sign it, send it to Amy, and she will return it to OSC with her signature on it.

Attachment 1: User_Software_Agreement-1.pdf
Attachment 2: xfdtd.pdf
  237   Wed Aug 2 22:33:18 2023 Amyslides from building meeting 8/2/23

Slides shown at experts building meeting Aug. 2nd, 2023.

Attachment 1: GENETIS_building_080223.pdf
  236   Wed Aug 2 12:49:57 2023 Dylan WellsLine of Best-Fit Straightened Sides Antenna

Previously, we have tried to straighten the sides of the best-evolved curved antenna in elog 229. However, there were potential issues with how closely this line resembled the curve of the antenna.

So, I attempted to create another straightened sides antenna using a linear regression model to find the best fitting line for the curve to create an antenna.

I made a Python notebook to separate the equations for each curve into 1000 discrete points. Then I ran a linear regression model to fit a curve of the points 1 - n, and a second curve of the n - 1000 points, looping from n = 2 to n = 999.

These results are from the combined output with the least squared error compared to the original.

Pictured is a plot showing the two sides of the curved bicone in red and blue, with the best fitting lines for each in black as well as a model in XF.

 

Results:

The antenna has a fitness score of 3.80627 with an error of 0.0759725.

This is much lower than the 5.71 of the curved antenna and 5.11 of the other attempt at straightening.

For the next attempt, we could consider constraining the endpoints to be the same as the original antenna to conserve the radius, and/or adding an extra line to fit the curve.

I've also attached a picture of what my notebook found for fitting 3 lines to the curve (not modeled or tested).

 

Professor Chen recommended using 3 sides and constraining the outer radii of the cones to match the original curved design.

 

Path to linear regression notebook: /users/PAS1960/dylanwells1629/developing/notebook.ipynb

Path to XF project: /users/PAS1960/dylanwells1629/straightened.xf

Attachment 1: output.png
output.png
Attachment 2: image_(3).png
image_(3).png
Attachment 3: output.png
output.png
  235   Wed Aug 2 00:17:32 2023 Jacob WeilerXF Antenna Drawing Progress 08/02/2023

I've been building in XF and have ran into some issues but currently have the following completed:

- Struts are placed, though they are not evenly spaced and the same. I have contacted XF to try and figure out how to get rotation/patterns to do what we need

- Circuit components and circuit board are in the xf file, though the components are not on the circuit board (I'm not totally sure how to put them on, that's the next step). The circuit components should be of spec, I looked up the part numbers from the previous ELOG post and grabbed the values from the manufacturer.

 

Here are the things that have not been completed/need answered:

- How to evenly space the struts connecting the shape (as stated previously, I've contacted XF to figure out how to do this easily. Im just bad at modeling in XF)

- Add circuit components to circuit board

- Add voltage and ground connections to the circuit board

- On the circuit diagram, figure out J1 and J2 connections. Meaning, which one connects to the signal from the cable and which connects to the other cone that is used as ground?

 

To see current antenna build go to: " /users/PAS1977/jacobweiler/GENETIS/XFzone/straightened_antenna_for_Jack.xf "

Attached are pictures in case there are issues pulling up model in XF. :)

 

 

Attachment 1: sidepic.PNG
sidepic.PNG
Attachment 2: circuitboardplacement.PNG
circuitboardplacement.PNG
Attachment 3: fullpic.PNG
fullpic.PNG
Attachment 4: struts.PNG
struts.PNG
  234   Tue Jul 25 16:07:25 2023 Dylan WellsParallelizing XF and pueoSim in the loop

Standard Loop Architecture:

Complete an evolutionary step FOR EACH antenna before continuing on with the next step.

Steps:

1. Run the Genetic Algorithm for the entire population.

2. Run the XF radio simulation for the entire population.

3. Run the neutrino simulation software for the entire population.

4. Run root analysis and plots for the entire population.

However, due to constraints on the amount XF keys we have, we can only run 4-5 XF simulations at a time. 

So, when the first antennas finish their XF simulations, their outputs will simply sit there until EVERY other antenna finished their XF simulations.

 

New Proposed Architecture:

Complete necessary evolutionary steps as a population, but string together those that don't rely on data from other antennas.

Steps:

1. Run the Genetic Algorithm for the entire population

2. Run the XF radio simulation for each antenna

      - When an XF simulation finishes for an antenna, submit the pueoSim / root analysis jobs for that antenna

3. Run the plots for the entire population

This will allow us to complete most of our pueoSim computation while the XF portion of the loop is still running, cutting down the time between the final XF job finishing and the final pueoSim job finishing.

 

Test run of this new architecture with 100 antennas, 7,840,000 neutrinos per antenna.

Part Time (seconds)
A 1
B1 1347
Entire B2 54017
B2 XF 53063
B2 remaining PUEO 954
E 7
F 23

After the final XF job finished, the pueoSim simulations and analysis of outputted root files were completed in 954 seconds,

 

Comparison Between the Two Architectures (both using job optimization from Elog 232)

Architecture Neutrinos Time In Loop (s)
Standard 4,000,000 ~6500
New Proposed  7,840,000  ~950

Notes on Chart:

Source of data located in /users/PAS1960/dylanwells1629/buildingPueoSim/testingouts/times.txt and /fs/ess/PAS1960/HornEvolutionTestingOSC/GENETIS_PUEO/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2023_07_24_test5/time.txt respectively)

Time from standard uses the time one of the 250 jobs running in parallel took in my testing of parallelizing processes inside of pueoSim jobs: 250 jobs * (40 * 40000 neutrinos per job) / 100 individuals = 4,000,000 neutrinos per individual)

The New Proposed time includes time spent analyzing the outputted root files to find fitness scores and errors, which would have taken around 100 seconds * population size for its number of neutrinos and files per individual (/fs/ess/PAS1960/HornEvolutionTestingOSC/GENETIS_PUEO/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2023_07_23_test5/time.txt for data on this number)

 

So, this new architecture can provide more improvements for the amount and speed of neutrino simulation in the loop on top of the methods discussed in Elog 232.

This architecture could also be applied to see improvements in the Bicone and Hpol loops which are both affected by the limited number of XF keys.

 

Additional Notes:

1. For this new architecture test, each antenna uses 49 jobs for neutrino simulation instead of 2.5 previously. (49 pueoSim + 1 XF for 50 jobs per antenna, 5,000 jobs per generation)

2. The time for each antenna to submit, queue, and finish its neutrino simulation jobs must be less than the length of the XF job, or the extra time will accumulate for each antenna, losing much of the time benefits. (As long as it is less, the time spent on just pueoSim should be invariant under an increase in population)

3. The number of core hours spent on pueoSim jobs will be roughly the same for the same number of neutrinos as each job is shorter (except for a small contribution of the job overhead taking a higher percentage of total time for shorter jobs)

4. Initially I had thought that maybe queuing pueoSim jobs while running the XF jobs could slow down the queue for the XF jobs. So, I made the loop wait to submit the batch pueoSim jobs until we had space for all of them to be active with the ~250 max jobs per user.

Additionally, while observing my many tests, I didn't notice any correlation between the number of CPU peuoSim jobs in the queue and the number of GPU XF jobs out of the queue.

5. Branch I'm developing this on is here

6. The total time for the test generation was 15.4 hours, which is slightly longer than the ~14 hours from the 2023_05_08 run. However, this test also used double the population size, larger values for the range of antenna heights (on average about 3x taller), and 20x more neutrinos simulated per antenna. So, the actual speed is better than it first looks.

 

 

 

 

  233   Mon Jul 24 15:51:28 2023 Ryan DeboltTest Loop runs that need done.

Types of runs I need (May need some other people to help me run these):

  1. Optimization runs

    1. Non-error

      1. Search over combinations of selection methods and genetic operators

        1. Fix Sigma at 10%.

      2. Do this for 10 runs for each 

      3. Re-run the best run for 100 tests to see if the results agree with 10 test results

      4. This will be the main talking point

      5. Save the plot for the best combination (proxy and metric)

    2. Error

      1. Re-run the best run for 100 tests with 3 different error amounts (0.1, 0.2, 0.3)

      2. We will compare these results to the non-error run to talk about how errors may affect consistency/speed. 

      3. Save an example plot of an error test for each error (both metric and proxy score)

    3. Population

      1. Re-run the best run for 100 tests with 3 different population sizes (100, 500, 1000)

      2. We will compare these results to the non-error run to talk about how population size affects consistency/speed. 

      3. Save an example plot of a population test for each size (just proxy score)

  2. Demonstration runs (single runs, fitness score, no error population 100)

    1. Crossover only

    2. Mutation only

    3. Reproduction only

    4. Injection only

  232   Tue Jul 18 22:04:22 2023 Dylan WellsParallelizing pueoSim jobs

Currently, the PUEO loop runs pueoSim with 1 pueoSim process per job submitted.

Each of these jobs has 1 node and 8 cores, however, pueoSim only needs a single core to run.

Here is some data I collected by running the same seed of pueoSim with different numbers of cores in the job:

Processes Cores Per Job Run Time (1000 neutrinos) Neutrinos Per Second
1 1 100 10
1 8 102 10
1 16 96 10
1 40 96 10

So, we should be able to run multiple processes of pueoSim without losing much performance.

Tests with more cores:

Processes Cores per Job Run Time (1000 neutrinos) Neutrinos Per Second
8 8 106 75
8 16 126 63
8 40 107 75
20 20 142 140
20 40 138 144
32 40 178 179
40 40 208 192

 

A test comparing the parallelization with the 40000 neutrinos per process we simulate in the loop:

Processes Cores Per Job Run Time (40000 neutrinos) Neutrinos Per Second
1 8 3226 12
40 40 6651 240

So, these tests suggest we can simulate neutrinos ~20 times faster than currently done in the loop by utilizing more cores per job.

This method of multiple processes per job should be applicable to how we run other simulation software like AraSim as well.

 

(Note: both of these jobs had comparable queue times of 27 and 31 seconds respectively.

Also, I have tested and seen that the outputted root files are identical for the same seed regardless of if ran with multiple processes at the same time or with processes in serial)

(data found in /users/PAS1960/dylanwells1629/buildingPueoSim/testingouts/times.txt)

 

How to run multiple processes of pueoSim:

Previous Call:

./pueoBuilder/build/components/pueoSim/simulatePueo -i pueo.conf -o ${PSIMDIR}/outputs/${gen}_outputs/$SLURM_ARRAY_TASK_ID -r $run_num -n $NNT -e $Exp > $TMPDIR/out.txt

 

Multiple Processes Test Call:

for ((i=0; i<$threads; i++))

do

    ./simulatePueo -i pueo.conf -o $TMPDIR -r $i -n $NNU -e 19 > pueo.out &

done

wait

 

Instead of just calling peuoSim once per job, we can use the & symbol and a loop to run $threads number of pueoSim processes in the background and then wait for them to finish.

  231   Wed Jul 12 21:30:56 2023 Alex MachtayZoom training on XF 07/12/23

Recording of training on XFdtd by Alex Machtay on July 12, 2023.

https://osu.zoom.us/rec/share/FVKiTcQrRh8NLNYJADwugy0H2VjDo8ZlBsH16sJAGv2JINNwxxzyNfo5ueqVgOTO._XErF57Kz8KOM3a5

This link will expire in 120 days so note that we need to post a permanent recording.

Here's the GitHub repository with examples of Xmacros: https://github.com/Machtay/XFdtd_Scripts 

  230   Thu Jul 6 14:52:09 2023 Jack TillmanBuilding - Matching Circuit Schematic, PCB, and components

Attached are images of the matching circuit schematic and PCB design. A parts list is also attached in .pdf and .csv format. The .csv format can be imported into Digikey if necessary.  

Table of component values:

Inductors Capacitors SMA Connectors 
22 nH 7.5 pF 50 Ω
27 nH 5.7 pF 50 Ω

 

Attachment 1: Matching_Circuit_Schematic.png
Matching_Circuit_Schematic.png
Attachment 2: Matching_Circuit_PCB.png
Matching_Circuit_PCB.png
Attachment 3: Matching_Circuit_DigiKey_Cart.pdf
Attachment 4: Matching_Circuit_DigiKey_Cart.csv
Index,Quantity,Part Number,Manufacturer Part Number,Description,Available,Backorder,Unit Price,Extended Price USD
1,3,WM26450-ND,733910083,"SMA RA JACK, PCB",3,0,5.1,15.3
2,4,490-GJM0335C1E7R5BB01DCT-ND,GJM0335C1E7R5BB01D,CAP CER 7.5PF 25V C0G/NP0 0201,4,0,0.1,0.4
3,2,490-17198-1-ND,GJM0335C1H5R7CB01D,CAP CER 5.7PF 50V C0G/NP0 0201,2,0,0.09,0.18
4,2,490-16032-1-ND,LQW2BAN27NJ00L,FIXED IND 27NH 2A 70 MOHM SMD,2,0,0.42,0.84
5,4,490-16028-1-ND,LQW2BAN22NJ00L,FIXED IND 22NH 1.9A 70 MOHM SMD,4,0,0.42,1.68
  229   Thu Jul 6 13:12:04 2023 Jack TillmanStraightened Sides AraSim Results

After discretizing and straightening the sides of the curved antenna that performed the best (Generation 13, individual 84) and running the antenna through AraSim, the following results and physics plots were generated. 

Attachment 1: Straightened_Sides_AraSim_Results.pdf
Attachment 2: Straightened_Sides_AraSim_Results.pptx
  228   Thu Jun 29 12:05:45 2023 Alex MGain at various source heights

Here are a collection of antenna gain patterns with the antenna power source located at various heights at 500 MHz. The heights are indicated in the name of the images and were located at 3cm, 6cm, 12cm, and 24cm from the base. One thing to note is that the power source becomes longer as a function of height (since it's connected to the ridges, which slope back). 

The 3D gain plots attached show the gain becoming more uniform until we get to the last one, where it seems to reinvert and be much stronger in the upward direction than below. I'll update this post with some polar slices for a more complete comparison between them.

 

EDIT: 07/17/23

I've made a few adjustments and added plots of them.

  • First, I separated the ridges. Previously, the ridges touched at their inner corners. This electrically connected them and may be why we saw very high peaks in the first set of impedance plots. You can see the plots named Separated_Impedance_<x>_cm.png.
    • This appears to have lowered the peaks considerably and also shifted them to lower frequencies. The peaks are still high when the source is placed high.
    • We seem to be developing another peak at higher frequencies, although this also existed in the previous tests for the high sources.
  • After this, I added a waveguide and positioned the source between the extensions of the ridges into the waveguide. I've also added a picture that shows the waveguide in the geometry. 
    • The sources here are positioned from 1 cm below the ridges to 8 cm below the ridges. The naming convention is the same as above, except it includes "Waveguide" in the name.
    • The peaks are considerably lower here and seem consistent as we place sources further down. They are all below 500 Ohms, compared to as much as 4000 Ohms in the previous tests.

EDIT: 08/10/23

I've been trying more tweaks to the design to get rid of the peaks we see in the plots below. I'm having trouble actually getting the impedance to match close to the 50 Ohm value we expect from the cable. The best case situations seem to come from when the ridges are still touching, which we don't want. Here are the properties I've been changing:

  • Ridge positions (gene in GA)
    • We don't want the ridges to touch, but I can't get them to be very far from each other anyway. The minimum wavelength in our bandwidth would be 20 cm, but that's close to the size of the bottom of the antenna for when we make it large, so the separation is still small.
    • When the ridges do touch is actually when I get the best matching,
  • Bottom size (gene in GA)
    • I've been changing the size of the bottom of the antenna. This is something that can change substantially between individuals in the GA, so even if I find a good value for this, the impedance it gives wouldn't be the same for all individuals we see in an evolution.
    • This does seem to move the location of the impedance peak (in frequency) but I can't seem to get it fully out of band.
  • Waveguide length
    • I've been changing the length of the waveguide between 3 cm and 10 cm. We said that somewhere in the middle should be the most reasonable (the example antenna we saw looked to have a waveguide of ~5 cm long). It seems like the source position is more important.
  • Source position
    • I've been moving the position of the power source inside the waveguide. This seems to move around the peak and can lower its height, but I haven't been able to get peaks lower than ~400 Ohms, except in cases where the ridges are in contact.

I've added a picture of the best impedance I managed to get, but this involved an antenna with a small base and ridges touching. My next step is to just try a grid search by making many antennas automatically and simulating them all to look for any that have a nice impedance in our band. 

Attachment 1: 3_cm.png
3_cm.png
Attachment 2: 6_cm.png
6_cm.png
Attachment 3: 12_cm.png
12_cm.png
Attachment 4: 24_cm.png
24_cm.png
Attachment 5: PUEO_Impedance_3_cm.png
PUEO_Impedance_3_cm.png
Attachment 6: PUEO_Impedance_6_cm.png
PUEO_Impedance_6_cm.png
Attachment 7: PUEO_Impedance_12_cm.png
PUEO_Impedance_12_cm.png
Attachment 8: PUEO_Impedance_24_cm.png
PUEO_Impedance_24_cm.png
Attachment 9: Separated_Impedance_3_cm.png
Separated_Impedance_3_cm.png
Attachment 10: Separated_Impedance_6_cm.png
Separated_Impedance_6_cm.png
Attachment 11: Separated_Impedance_12_cm.png
Separated_Impedance_12_cm.png
Attachment 12: Separated_Impedance_24_cm.png
Separated_Impedance_24_cm.png
Attachment 13: Separated_Waveguide_Impedance_1.png
Separated_Waveguide_Impedance_1.png
Attachment 14: Separated_Waveguide_Impedance_3.png
Separated_Waveguide_Impedance_3.png
Attachment 15: Separated_Waveguide_Impedance_6.png
Separated_Waveguide_Impedance_6.png
Attachment 16: Separated_Waveguide_Impedance_8.png
Separated_Waveguide_Impedance_8.png
Attachment 17: Best_Impedance_Plot_Horn_Antenna.png
Best_Impedance_Plot_Horn_Antenna.png
  227   Wed Jun 28 15:49:44 2023 Ryan DeboltOptimization Runs 6/12/2023

All data and plots discussed in this post are taken from this spreadsheet:

https://docs.google.com/spreadsheets/d/1BbpD81mugWQf10ozGDLI60takAn3tlvrq8ksT10yV5I/edit?usp=sharing

Run Details:

This optimization run was done to do a course search for the optimal set of parameters to run the GA with. This run used a fixed 100-individual population with a simulated error of 0.25 over 50 generations, to best replicate the current PUEO-loop environment. The selection methods have also been held fixed in this run. This run was tested using both the ARA and PUEO design to see if there were similarities in the best run type. This run encompassed 210 different run combinations that searched the following parameter space:

  • 0-16 Reproduction, step sizes of 4
  • 72-96 Crossover, step sizes of 4
  • 4-16 Mutation, step sizes of 4
  • 5-15 Sigma, step sizes of 5

 

Results:

Each run combination was run 10 times and we tracked the average number of generations it took for the distance metric to reach 0.05, which corresponds to a 0.95 true fitness score. The best runs for each design were as followed:

  • ARA
    • Parameters
      • 12 Reproduction
      • 72 Crossover
      • 4 Mutation
      • 5 Sigma
    • Average gens to benchmark
      • 28.7 generations
    • Standard Deviation
      • 17.2 generations
  • PUEO
    • Parameters
      • 0 Reproduction
      • 96 Crossover
      • 4 Mutation
      • 15 Sigma
    • Average gens to benchmark
      • 23.0 generations
    • Standard Deviation
      • 13.0 generations

We can see that these run types do not appear to have any strong correlations. In fact, looking at our complete data set, there does not appear to be a strong trend around any of the best runs. This issue became more prominent when we ran these best two run types for 100 tests rather than 10. When we did this, they returned averages of 44.4 generations for PUEO and 46.9 generations for ARA. For comparison, the average number of generations across all run types was 43.1 generations for PUEO and 42.8 generations for ARA. This seems to suggest that all of these run types are inherently inconsistent and regress to the mean given enough tests. Therefore, I do not believe we can draw any conclusions from this run.

 

Moving Forward:

Our ongoing hypothesis is that the size of the error could be causing inconsistency in how quickly our population can grow over time. Therefore, our next step is to repeat this experiment, but with zero error included, and see if we achieve results that show consistent behavior. If we can find more consistency in runs with no error, then we can more deeply explore the effects that error can have on GA growth. If there continues to be a lack of consistency, then we can look to other factors, such as population size, and try to find the root of the inconsistency.

 

  226   Sun Jun 18 21:32:03 2023 Dylan WellsDefault Toyon Antenna Simulation

To act as our comparison to the evolved antennas while plotting, we have done a simulation of pueoSim with 4,000,000 neutrinos for the measured toyon gains found in /fs/ess/PAS1960/buildingPueoSim/pueoBuilder/components/pueoSim/data/antennas/measured

In order to run the jobs, I used the runJobs.sh script found in /fs/ess/PAS1960/buildingPueoSim which submits job runs of 40,000 neutrinos at a time, mirroring what we do in the actual loop.

The resulting data is now located in /fs/ess/PAS1960/HornEvolutionOSC/GENETIS_PUEO/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Toyon_Outputs

Veff: 11750.0503856

Plus Error: 89.0051458227

Minus Error:88.9007824246

The fitness score plots have been updated to read this value in as a comparison.

 

Attachment 1: 248599981-8eacbc83-d42e-4da4-9746-bda05b2b4a38.png
248599981-8eacbc83-d42e-4da4-9746-bda05b2b4a38.png
Attachment 2: 248599974-bee7a4db-34c6-4cfd-bde0-3682ff3ebaf7.png
248599974-bee7a4db-34c6-4cfd-bde0-3682ff3ebaf7.png
  225   Wed Jun 14 14:38:22 2023 Alex MPUEO Antenna Dimensions

Here are my recommended starting genes for the initial generation of the upcoming run (confirmed that these will produce a working antenna in XF). We want to use the lowest values we can because we expect that a larger (namely, taller) antenna will perform better:

S, H, x0, y0, yf, zf, beta
7.50000,50.0000,1.0000,1.00000,1.00000,50.0000,0.2

  • S: Half the side length of the bottom of the antenna
  • H: height of the antenna
  • x0: distance of the bottom of the ridge from origin
  • y0: width of ridge at the bottom
  • yf: width of ridge at top
  • zf: final height of the ridge (cannot exceed H)
  • beta: a curvature parameter for the ridges
  224   Mon Jun 5 15:00:07 2023 Ryan DeboltGithub tests

We want to automate tests in pull requests in GitHub to run unit tests on individual functions to ensure they return the expected results. This will help prevent bugged code from being pushed to working branches. We will add a list of unit tests to this ELOG as we design them.

 

  223   Fri Jun 2 00:21:36 2023 Ryan DeboltError test results

Attached is a plot containing bar graphs with error bars representing the average number of generations it took for the GA to achieve a chi-squared value of 0.25 (roughly equated to a 0.8 out of a max 1.0 fitness score). Unlike the fitness scores used by the GA, these values do not have simulated error attached to them and are therefore a better measure of how well the GA is optimizing. These results were obtained by running 10 tests in the test loop for each design, population, and error combination and solving for the average number of generations to meet our threshold and the standard deviation of those scores. From this, a few things immediately pop out, I will address the more obvious one later. But essential for this test, we can see that increasing our population size seems to have a more direct impact on the number of generations needed to reach our threshold than decreased error does in both designs. My best guess regarding this is that the GA depends on diversity in its population in order to produce efficient growth, and an increase in the number of individuals contributes to this, allowing the GA to explore more options.

 

This leads me to the more easily spotted trend; PUEO is much slower than ARA. This presents an anomaly as this is the opposite of what we would expect from this test loop as PUEO has fewer genes (7) to optimize than ARA (8). It is also important to note that no genes are being held constant in this test for either design, so both designs have the full range of designs provided they are within the constraints. With that in mind, my guess as to what causes this phenomenon is that PUEO's constraints are much stronger than ARA's. How this may affect the growth is that it more heavily bounds the possible solutions, which makes it harder for the GA to iterate on designs. It is possible that during a function like a crossover, the only possible combinations for a pair of children are identical to their parents, effectively performing reproduction. This could limit the genetic diversity in a population and therefore cause an increase of generations needed to reach an answer. We could in theory test this by relaxing the constraints done by PUEO and then running the test again to see how it compares.

 

Finally, You will notice that no AREA designs are shown. This is because, under current conditions, they never reached the threshold within 50 generations. However, Bryan and I think we know what is happening there. AREA has 28 genes, about four times the amount of genes that our other designs use. Given that our current test loop fitness measure is dependent on a chi-squared value given by: SUM | ((observed(gene) - expected(gene))^2) / expected(gene) |, we can see that given more genes, the harder it gets to approach zero. For example, we can imagine in an ARA design if each index of the sum equals 0.1, you would get a total value of 0.8, while AREA would get a value of 2.8, which seems considerably worse, despite each index being the same. Upon further thinking about it, Bryan and I do not think that a chi-squared is the best measure of fit we could be using in this context. Another thing we thought about is that we have negative expected values in some cases. We have skirted around this by using absolute values, but upon reflection believe this to be an indicator of a poor choice in metric. Chi-Squared calculations seem to be a better fit for positive, independent, and normally distributed values, rather than our discrete values provided by our GA. With this in mind, we propose changing to a Normalized Euclidean Distance metric to calculate our fitness scores moving forward. This is given by the calculation: d = sqrt((1/max_genes) * SUM (observed(gene) - expected(gene))^2). This accomplishes a few things. First, it keeps the same 0 -> infinity bounds that our current measure has, allowing our 1/(1+d) fitness score to be bounded between 0 and 1. Second, it forces all indices to be positive so we don't need to worry about negative values in the calculation. Third, this function is weighted by the number of genes present for any given design, making them easier to compare than our current measure. Finally, as our GA is technically performing a search in an N-dimensional space for a location that provides a maximized fitness score, it makes sense to provide it the distance a solution is from that location as a measure of fit in our test loop. We created a branch on the test loop repository to test this and the results are promising as results from the three designs are much more comparable for the most part (though we still see some slowdown we think is contributed to constraints as mentioned above). Though some further input would be appreciated before we begin doing tests like the one we have done in the plot below.

Attachment 1: test_results(1).png
test_results(1).png
  222   Thu Jun 1 21:49:29 2023 Dylan WellsGuide to Updating pueoSim

How To Update PueoSim For GENETIS:

 

First, whoever updates pueoSim needs access to pueoBuilder, pueoSim, and niceMC on GitHub (ask Will for permissions).

Once you do, go into the peuoSim directory at /fs/ess/PAS1960/buildingPueoSim/

and source set_env.sh

`source set_env.sh`

Then, we want to make copies of the files we are currently modifying for the GENETIS loop.

For PueoSim v1.1.0 these are:

  1. nicemc/src/EventGenerator.cc  # Modified to create custom output root files to calculate errors

  2. pueosim/test/simulatePueo.cc # Modified to stop the simulation of the LF antenna which is not needed for GENETIS

  3. pueosim/src/Seavey.cc # Modified to read in custom gain files

  4. pueosim/src/pueo.cc # Modified to read in custom gain files

  5. pueosim/include/Seavey.hh # Modifies to read in custom gain files

Currently, I store copies of these in the `/fs/ess/PAS1960/buildingPueoSim/backups` directory in case somebody accidentally overwrites the files in pueoBuilder. 

 

Once you’ve made the copies, you can run `./pueoBuilder.sh` from the `/fs/ess/PAS1960/buildingPueoSim/pueoBuiler` directory. This will rebuild pueoSim and niceMC, pulling the latest updates from GitHub. 

 

You may need to delete the pueoSim and niceMC directories in order for the builder to pull the latest version from GitHub. Or, if it’s being really stubborn, move the whole pueoBuilder directory to a temporary location and run the builder from scratch with 

`git clone git@github.com:PUEOCollaboration/pueoBuilder` and then `./pueoBuilder.sh`

 

Then, you will need to reference the copies of the changed files to make changes to the new version of pueoSim. Hope this doesn’t cause too much of a headache, and when you’re done, return to the /fs/ess/PAS1960/buildingPueoSim/pueoBuiler directory. 

Then you simply type

`make install`

then

`make`

 

And now, pueoSim should be ready to run!


 

EventGeneratior.cc Changes and Rationale:

PueoSim’s default output ROOT files are very large and therefore time-consuming to parse through to get the information we need to calculate effective volume and errors. So, we want to create a custom ROOT file with only the variables we want, greatly increasing the speed of the analysis.

To do this, we want to create a new TFile with corresponding TTree and TBranches that will store the loop.positionWeight, loop.directionWeight, and neutrino.path.weight. Then, we want to fill the Tree when a detector is triggered and write the results to the file at the end of the loop.

Sample code for initializing the TFile:

 

simulatePueo.cc Changes and Rationale:

By default, pueoSim v1.1.0 runs a simulation for the normal antenna and a low-frequency (LF) antenna. As GENETIS is evolving for the main antenna, we are not interested in using computation time to simulate the LF antenna. So, we comment out the lines that initialize the LF detector in this file.

 

Seavey.cc, Seavey.hh, and pueo.cc Changes and Rationale:

As of pueoSim v1.1.0, the simulation software only has the ability to read in one antenna. This is a problem, as we want it to be able to read in files for any antenna we make. So, we need to change these scripts to be able to read in whatever gain files we want.

 

The convention the loop uses is to input gain files in the format of 

vv_0_Toyon{runNum}

hh_0_Toyon{runNum}

In the ./pueoBuilder/components/pueosim/data/antennas/simulated directory

So, the main change is getting the runNum variable into Seavey.cc file where the gains are read. Currently, we define a global variable at the stary of pueo.cc and pass it into where Seavey is called. This means we have to add runNum as a parameter in Seavey.cc as well as Seavey.hh. Finally, we change the name of the read-in files to be in the above format AFTER dividing runNum by 1000 (this is because pueoSim uses the run number as a random number generating seed, so we divide runNum by 1000 to be able to read in the same gain patterns for multiple seeds of the same individual).

 

Note: We used to change pueoSim to output a veff.csv file. We now handle this calculation by analyzing ROOT files, so this change is no longer necessary. 

  Draft   Mon May 29 20:21:07 2023 Dylan WellsPueo Physics of Results Plots

The Physics of Results Plots have been added to the Pueo Loop. The current version of the plotter is built for pueoSim v1.0 and located in ${WorkingDir}/Antenna_Performance_Metric (Hasn't been pulled into the loop directory yet).

The pueoSim v1.0 IceFinal files were missing information on the RF direction and information needed to see an amplitude spectrum. I asked Will, and he said that the new version of pueoSim (v1.1.0) outputs the needed information.

I created an updated version of the plotter, and have a pull request here: https://github.com/osu-particle-astrophysics/GENETIS_PUEO/pull/40

However, before this can be implemented in the loop, we need a way to get errors from pueoSim v1.1.0.

Currently, there is a version of rootAnalysis.py here that can analyze the new root files and output fitness scores and errors, but instead of taking 20 minutes for a generation, it now takes 20 minutes per individual to run.

This is because the update splits the IceFinal file into IceFinal_allTree, IceFinal_passTree0, and IceFinal_passTree1. IceFinal_allTree and IceFinal_passTree1 are of comparable size to the previous IceFinal file, but the passTree0 final is

about 10-20 times larger, causing a slowdown in calculations. If we calculate without this file, it takes about 1 minute per individual, still a bit slower than before.

Ideas to solve this issue:

Don't use the passTree0 files (I have asked Will what they're for, and if we need them. Hopefully he responds after the Holiday.)

Instead of running through a Python for loop, call a C++ script that creates a CSV file the Python program can easily load in.

Submit a batch job to run the analysis in parallel before combining the outputs in the correct format. (We should maybe do this anyways?)

Continue using pueoSim v1.0 (I think we can still retain the Theta graphs for the incoming neutrinos, but there won't be any RF graphs or the possibility of amplitude spectrum plots) 

 

Attached is a preview of plots the v1.1 plotter is capable of making.

 

Add weights.

 

 

 

Attachment 1: 1_neutrinoFlavor_bestindiv.png
1_neutrinoFlavor_bestindiv.png
Attachment 2: 1_nuDirCosTheta_bestindiv.png
1_nuDirCosTheta_bestindiv.png
Attachment 3: 1_nuDirTheta_bestindiv.png
1_nuDirTheta_bestindiv.png
Attachment 4: 1_RFdirCosTheta_bestindiv.png
1_RFdirCosTheta_bestindiv.png
Attachment 5: 1_RFdirTheta_bestindiv.png
1_RFdirTheta_bestindiv.png
Attachment 6: 1_maxEField_vs_maxEFieldFreq_2d_bestindiv.png
1_maxEField_vs_maxEFieldFreq_2d_bestindiv.png
Attachment 7: 1_1_signals_bestindiv.png
1_1_signals_bestindiv.png
  220   Thu May 25 15:36:54 2023 Ryan Debolt, Byran Reynoldspreliminary error tests (PUEO)

Here are some preliminary results from testing the effect of error on growth in the GA. For this test, we start with a simulated error of 0.5 because our true fitness score is bounded between 0.0 and 1.0. From here, we simulate doubling the number of neutrinos by reducing the error by root(2), then root(4), and observed the growth on the fitness scores plots. We did these three tests with both 50 and 100 individuals (plots starting with 30 use 50 and starting with 60 use 100). Looking at the plots, we can see that the only plot that shows growth is 100 individuals with halved error (corresponding to 4 times the number of neutrinos). In fact, it took going to root(25) (corresponding to 25 times the number of neutrinos) to observe comparable growth with 50 individuals. This leads us to believe we likely need to increase both neutrinos and individuals to see meaningful growth in our GA. Further tests are required to see how consistent these results are. Another test, though unrealistic, we ran 1000 individuals with the root(25), this test was optimized in around 10 generations, this could be seen as a maximum performance standard.

Attachment 1: 30_10_10_0_48_25_6_2_half_error_fitness.png
30_10_10_0_48_25_6_2_half_error_fitness.png
Attachment 2: 30_10_10_0_48_25_6_2_high_error_fitness.png
30_10_10_0_48_25_6_2_high_error_fitness.png
Attachment 3: 30_10_10_0_48_25_6_2_root2_error_fitness.png
30_10_10_0_48_25_6_2_root2_error_fitness.png
Attachment 4: 30_10_10_0_48_25_6_2_root8_error_fitness.png
30_10_10_0_48_25_6_2_root8_error_fitness.png
Attachment 5: 30_10_10_0_48_25_6_2_root25_error_fitness.png
30_10_10_0_48_25_6_2_root25_error_fitness.png
Attachment 6: 60_20_20_0_96_25_6_1_half_error_fitness.png
60_20_20_0_96_25_6_1_half_error_fitness.png
Attachment 7: 60_20_20_0_96_25_6_1_high_error_fitness.png
60_20_20_0_96_25_6_1_high_error_fitness.png
Attachment 8: 60_20_20_0_96_25_6_1_root2_error_fitness.png
60_20_20_0_96_25_6_1_root2_error_fitness.png
  219   Mon May 22 20:34:59 2023 AmyThings to do before starting new PUEO run from 5/22/23 meeting

Here is a list of things we agreed to do before starting a new PUEO run.  Feel free to add notes here as things are done and we will revisit the list next week.

Change range of the height variable to 0.75-1.75m

Start with all bad individuals so that we can be sure and see growth - all at 0.75m?

Make sure we are using the ratios in the GA that we think we are

If we are using reproduction, are we combining results when individuals are resimulated to reduce errors?  I made a program to accomplish this and created a pull request on the PUEO Github (Dylan)

Investigate whether there are obvious places to speed up PUEOSim

Consolidate the GA to one branch

Understand what is happening with cross-pol, make sure we're not gettting Veff=0 when using XF-generated cross-pol response

Edit: Have the xmacros use the realized gain instead of the idealized gain, which allows for the design to build in matching

 

  218   Thu May 11 15:57:08 2023 Ryan Debolt, Byran ReynoldsAREA Updates

Here is some backlogged information as well as recent updates to our progress on AREA and its optimizations:

4/13/2023

We concluded our initial test of the AREA optimization loop. While analyzing our results, we noticed that most of our runs never reached our benchmarks for performance (chi-squared scores of .25 and .1) and that those that did contain abnormally high amounts of mutation. From previous runs using the GA for the GENETIS loop, we find that mutation and immigration (Note: AREA does not use immigration) usually play a smaller role in overall growth and are simply there to promote diversity. Crossover on the other hand is what handles the bulk of the growth done by the GA. Given our results ran counter to that, we decided to look further into the matter.

Upon looking at the fitness score files, we could see that mutation-created individuals did not perform well in the best run types, but the crossover ones did contain the bulk of good scores. This lines up with expectations. However, closer inspection revealed that these crossover-derived individuals had extremely similar fitness scores, which could indicate elitism in selection methods leading to a lack of diversity in solutions. We then looked at a run that used only crossover with one selection type (roulette), and found every individual to have identical (and poor) scores that were the same up to around the 4th decimal place. This is a strong case that the selection methods used are too elitist to grow a population properly. 

We dove into the AREA GA to take a look at the functions doing the selection methods, and discovered several issues potentially causing excess elitism in the GA. It seems that the roulette selection does not behave the way we have used in our other GAs. There appears to be no weighting of individuals; rather, a threshold fitness score is collected and only individuals with a fitness score above the threshold are selected. This causes elitism, as only the most fit individuals are likely to pass this threshold. Tournament was found to be similarly troubled, with a bracket size of ⅓ of the population. This is again very elitist, as it is very large, making it very likely that only the best individuals will be selected. Before we try to further optimize the AREA GA, these selection methods should be addressed and fixed.

For roulette, we propose implementing a similar weighting scheme for individuals as is used in the PAEA GAs that gives preference to the most fit individuals, but still allows others to be selected to encourage diversity of solutions.

For crossover, we propose decreasing the bracket size. This would allow a more diverse range of individuals to be selected through “winning” smaller brackets that would have a lower probability of including top performing individuals.

4/20/23

We (Bryan and Ryan) met to work on improving the selection method functions in the AREA algorithm. 

For roulette selection, we added weighting by fitness score, as is done in the other GENETIS GAs, in an effort to prevent it from disproportionately selecting the most fit individuals only to become parents. As a first test, we ran an abbreviated version of the test-loop code, printing the fitness scores of the parents selected by the roulette method. The fix appears to have passed this initial test, as the fitness scores showed more variety and in the case of roulette crossover two unique parents seemed to be selected.

For tournament selection, the only change necessary appeared to be decreasing the bracket size of the tournament(s), which in turn encourages other individuals besides the most fit to be selected as parents, therefore increasing diversity of solutions. We ran out of time to test this change fully, so we will pick up here in our next meeting.

Looking further ahead, we will plan to work on refactoring the AREA algorithm to use the same functions as the other GENETIS GAs wherever possible. In the meantime, this working version can still be used for feature development so that progress is not halted.

 

5/11/2023

Upon looking at the results of the recent optimizations, our best runs are still taking over 40 generations to reach an optimized score. Given the speed of AraSim, this is still too slow to be considered optimal. Comparing this test loop run to the ones run on by the broader GENETIS GA, our best runs for the AREA GA are worse than the worst runs from those optimizations. As such, we have decided to pause optimizing the AREA GA in favor of adding it to the broader GENETIS one. As of today, we have finished a rough version of the generating function necessary to create new individuals. We have also started progress on the constraining functions and scaling functions that will be necessary to generate the spherical harmonics used to find the gain and phase. Once these functions are complete, we should be able to transplant this GA back into our test loop for AREA and resume optimizations.
 

  217   Wed May 10 17:43:20 2023 Alex MHow to run the loop

In this post, I'm going to give step by step instructions on everything you need to do to run the loop. See Julie's thesis for the most recent iteration of this manual. Also refer to entry 123 for a list of some errors we have encountered historically in the loop and how to resolve them, though some fixes may be outdated.

Running the loop

Getting started

Assuming you have followed the instructions from the onboarding tutorials, you should be ready to access OSC through the interactive website. Instead of using ssh to access OSC, the loop requires that you go to this website: https://ondemand.osc.edu/ . Login with your usual OSC credentials. Once there, you will need to request a Lightweight Desktop by clicking on "Interactive Apps" at the top of the page. See the screenshots attached for how to do this. Old documentation may refer to the Lightweight Desktop as a VDI.

You can request up to 24 hours for a Lightweight Desktop, and it should begin almost immediately. After you request it, the website will take you directly to the waiting page. You can navigate to this page yourself by clicking "My Interactive Sessions" at the top of the ondemand page. When the job begins, you will see a blue buttong that says "Launch Lightweight Desktop". Click it and you should have a new tab open that brings you to a remote desktop environment on OSC that you interact with through your browser. 

New runs

If you're starting a new run for the first time (that is, beginning from generation 0), you will need to edit the script that runs the loop. Here is the path:  /fs/ess/PAS1960/HornEvolutionOSC/GENETIS_PUEO/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Loop_Scripts/Asym_XF_Loop.sh . At the top of the script is a list of variables that can be changed. See the first screenshot attached here.
For a new run, you must change the variable <RunName>, which is the first variable in the list. It should be in quotes and the convention is to start the name off with the date of the run, using YYYY/MM/DD format--this will always keep everything in chronological order when listing directories with <ls>. Other variables are explained in the comments next to them in Asym_XF_Loop.sh and you should change them depending on the type of run you are conducting. 

To begin the loop, type in the command ./Loop_Scripts/Asym_XF_Loop.sh from the Evolutionary_Loop directory.

When the loop begins, you will be asked to press any key. After you hit a key, the loop will run Part A, which executes the GA using the <start> mode. It will then automatically move on to Part B, which creates the antennas in XFdtd. XF will ask you if you want to specify a location for the XF file to be saved. Click <No>. The loop will automatically save the XF directory into the run directory when it finishes with the first part of part B. In principle (that is, barring errors that stall the loop or interruptions due to the VDI job ending), you will never need to manually enter anything to the loop for it to run beyond this point. 

However, if it is your first time using XF, you will need to set the max GHz setting upon startup to 2 instead of the default 10. 

Continuing Runs

After starting a new run, the loop will run automatically. When your Lightweight Desktop job ends, you'll need to get another one repeat the steps above. You will not be prompted for any input. 

Stepping Back

At times, you may want to continue the loop from an earlier point or interrupt the loop and step back. Usually you'll only want to do this within a generation, but it's possible that you will encounter an error or bug at the end of a generation and wish to return back to that point to remedy it before continuing forward in the next generation. This is a very tricky and delicate process that requires a lot of attention to detail. In the future, we'd like to make an option for the loop to do this automatically when given input at the beginning, but implementing that will take a long time and will be very sophisticated.

The state of the loop is recorded in the savestate file located here: /fs/ess/PAS1960/HornEvolutionOSC/GENETIS_PUEO/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/saveStates . The file will be named <Run_Name>.savestate.txt . In it, you will see three numbers. The first one represents the current generation of the loop. The second one represents the state of the loop, that is, which part in the generation it is currently on. The third one represents the individual it is processing. In practice, the third number is rarely relevant, and is almost always 1, though it can be used for Part B, where the loop is processing individuals sequentially, so if it was interrupted on individual eight (for example) you can change the number to be 8 so that it will pick up where it left off without needing to redo the first seven individuals.

If you want to step back to an earlier state in a generation, you'll need to interrupt the loop and revert the state by changing the second number in the savestate file. This is NOT all you will have to do, however. Because of the way files are edited and moved around during states, you will need to manually revert files to be in the format or location needed by the earlier state. 

For example, you may need to revert from state 2 (when XF is creating the antenna geometries) to state 1 (when the GA generates new individuals). In this case, you'll need to edit the savestate file to change the second number from a 2 to a 1. Then, you'll need to change the generationDNA.csv file in Generation_Data to use the values from the previous generation, since the GA will have overwritten that file and uses it to determine what individuals are to be selected from. To do this, you'll need to locate the <gen>_generationDNA.csv file from the previous generation in the <RunName> directory in Run_Outputs. This is should be found here:  /fs/ess/PAS1960/HornEvolutionOSC/GENETIS_PUEO/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/<RunName>/Generation_Data . 

The above is a relatively simple example of how to step back in the loop. Stepping back from a late state to an early state will be more complicated, though if you're willing to sacrifice run time you can pretty easily follow the above to just restart a generation. Stepping back to a previous generation will be explained in a future update to this post.

Attachment 1: Ondemand_Front_Page.png
Ondemand_Front_Page.png
Attachment 2: Ondemand_Interactive_Apps.png
Ondemand_Interactive_Apps.png
Attachment 3: Launching_Lightweight_Desktop.png
Launching_Lightweight_Desktop.png
  216   Tue May 9 18:09:35 2023 Alex M05/08/23 Pueo Run

Here are the run details for the latest PUEO run we've started. There are still some bugs that need to be worked out, which are detailed on the github. Here is the directory where the data is stored: /fs/ess/PAS1960/HornEvolutionOSC/GENETIS_PUEO/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2023_05_08

This run uses 50 individuals per generation with 400k neutrinos per individual at an energy exponent of 19. Only the inner side length and outer sidelength are being evolved (which evolves the height since the opening angle is fixed). 

Issues With Part E (Dylan):

The Plots were not automatically created for the first generation. After a quick look through, I found that the fitness score and v effective csv files were being moved before they were copied, so the files didn’t end up in the correct place. Additionally, the errorbars.csv file was not being created, so I made a temporary fix to create a file of 0 error bars to allow for plotting the values while I work on getting the real error values. 

Update: I have modified Will’s script for reading the root file outputs, so it can now read them to output a CSV file with the effective volume along with its positive and negative errors. This script does the same and more as the fitnessfunctionPUEO.py, so I will replace it in the loop when there is downtime. Additionally, this script means we don’t need to output a veff.csv file from pueoSim. I will now work on creating a less “janky” version of my pueoSim change for reading in the gain files, so I can get Will to officially add it to pueoSim and we can pull any updates in the future.

Update, Implementing the new script into Part E:

The rootAnalysis.py script is very picky with environment variables. So, first I had to load and then unload a version of python to make sure the default version is loaded. Then, I moved the sourcing of set_plotting_env.sh to later in the script to avoid having an alternate version of root sourced while running (this would cause errors). Then I source the environment for pueosim (path hardcoded, change when loop isn’t running) and loop through the rootAnalysis.py program for each individual in the generation. This will output a ${gen}_fitnessScores.csv and a ${gen}_errorBars.csv in the run directory for plotting script to use. Because it outputs these automatically, I commented out the old methods we used to create these files and removed the temporary error bar fix as well.

Another Update:

We paused the loop. I changed the hardcoded parts, and we pushed the new updates to the github. I will make comments on the changes later today. 

Wednesday:

It seems like the loop is still not creating the csv files or plots for generation 1 or 2. Alex gave me the error message. The python script rootAnalysis.py had an issue with the include Geoid.h line. This was caused by sourcing the wrong things while trying to get the script working. I found that I only changed my local pueoSim environment to include the fftw installation to the $PATH and $LD_LIBRARY_PATH variables. So, I changed /fs/ess/PAS1960/buildingPueoSim/set_env.sh as well. Also, I found that the include statements in rootAnalysis.py were missing the PAS1960 portion of the path. After fixing these, and adding a missing ‘/’ to the output file path, I manually ran the rootAnalysis.py program for the 2023_05_08 run, mimicking the portion of the bash script that runs it in Part_E. It outputted the correct files in the correct format. I then ran the FScorePlot script. The median line for the ViolinPlot seemed wrong, and the FScorePlot was too scrunched with a y start of 0; I will need to change these.

 

Plotting Update (Dylan):

Ok, plots still aren’t being made, and I’m not running the loop, so I don’t have access to the error messages, so I’ll go through everything one by one. For Veff_Plots, this isn’t being made as there are currently no vEffectives.csv. This isn’t a big deal, as it’s just a copy of FScorePlot, but I added the creation of vEffectives.csv to rootAnalysis.py anyway. Next, I noticed that runData.csv, which is required for a couple of the plots was not being made. I looked, and the version of gensData.py had the old values for the skiprows when reading in the fitnessScores and generationDNA files, something that was overlooked when we merged the version I was developing with the version Alex was developing on. I can’t access the directory or the file, I think this is why it was overlooked in the merge. I created a temporary PUEO version in Antenna_Performance_Metric (I’m also fine with it just living here permanently). 

Also, the csv files are now in the GenerationData/ directory in the run directory? This affects every plotting script and they will not work without changes. I don’t know why this was changed or if this change is permanent?

Next, ok apparently, VariablePlots isn’t even a file in the loop? We really need to use GitHub better. 

I moved my local version of the program into the loop and it ran fine manually.

I am forsaking the Generation_Data directory, so I changed the rainbowPlotter and dataConverter scripts to read in a location to match all the other plotting scripts. They both also ran fine manually. 

Note: The rainbowPlotter script should be able to create a gradient from the minimum fitness score to the maximum fitness score. (currently, the range is hardcoded and this can cause basically a mono-color graph.)

FScorePlot should be good

The bash script was inputting 5 variables into colorplots when the pueo version only takes in 4 (this is also something that was already fixed before the merge.) It also requires the vEffective.csv files. After copying over the fitnessScore.csv files to vEffective.csv files, it ran fine. (The vEffective.csv files will be made automatically by rootAnalysis.py in the future)

Attachment 1: run_details.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2023_05_08'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=10			## number of generations (after initial) to run through
NPOP=50			## number of individuals per generation; please keep this value below 99
Seeds=10			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=40000			## Number of Neutrinos Thrown in AraSim   
exp=19				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=6			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
PUEO=1				## IF 1, we evolve the PUEO quad-ridged horn antenna, if 0, we evolve the Bicone
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=1			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=3			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=36			## Number (not fraction!) of individuals formed through crossover
MUTATION=1			## Probability of mutation (divided by 100)
SIGMA=5				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=20			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=20			## Percent of individuals selected through tournament (divided by 10)
RANK=60				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

  215   Mon May 1 05:45:02 2023 Alex MMidscale PUEO Run

I've started a run of the PUEO loop to get some data for evolving the antenna width and height. We are running with 24 individuals, each with 400k neutrinos at an energy exponent of 19. Here is the output directory: /fs/ess/PAS1960/HornEvolutionOSC/GENETIS_PUEO/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2023_05_01_Test_5

It's very important to note that the cross-pol data being used still comes from the data already stored in pueosim. This is because our extremely low cross polarizations were causing us to have no effective volumes. There's likely some issue in what values from XF we are choosing as our crosspols.

Attachment 1: run_details.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2023_05_01_Test_5'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=10			## number of generations (after initial) to run through
NPOP=24			## number of individuals per generation; please keep this value below 99
Seeds=10			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=40000			## Number of Neutrinos Thrown in AraSim   
exp=19				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=6			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
PUEO=1				## IF 1, we evolve the PUEO quad-ridged horn antenna, if 0, we evolve the Bicone
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=1			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=6			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=10			## Number (not fraction!) of individuals formed through crossover
MUTATION=1			## Probability of mutation (divided by 100)
SIGMA=5				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=2			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=2			## Percent of individuals selected through tournament (divided by 10)
RANK=6				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

  214   Sun Apr 30 03:45:07 2023 Alex MPreliminary PUEO Run

We have the PUEO loop in working order, though there are a few errors in accuracy and efficiency. We started a preliminary run with few individuals and neutrrinos as a large scale test that may still give us some useful data. 

For this run, we are only evolving the inner side length (10cm to 25 cm) and height (10 cm to 50 cm). The walls are slanted at 45 degrees, so the outer length is completely defined by those two. The ridges are kept at 6 cm wide and 4 cm from the walls at the base. The curvature is set to 0,1 and the ridges are set to have the same height as the walls. 

At the moment, we are using 24 individuals and 300,000 neutrinos. I'll update this ELOG post with more details from the run as they emerge.

Attachment 1: PUEO_run_details.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2023_04_29_Test_10'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100			## number of generations (after initial) to run through
NPOP=24			## number of individuals per generation; please keep this value below 99
Seeds=2			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=1000			## Number of Neutrinos Thrown in AraSim   
exp=18				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
PUEO=1				## IF 1, we evolve the PUEO quad-ridged horn antenna, if 0, we evolve the Bicone
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=1			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=6			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=10			## Number (not fraction!) of individuals formed through crossover
MUTATION=1			## Probability of mutation (divided by 100)
SIGMA=5				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=2			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=2			## Percent of individuals selected through tournament (divided by 10)
RANK=6				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

  213   Thu Apr 27 01:36:32 2023 Alex MResults from paper symmetric run

The reviewer asked us to run the loop again but for just symmetric antenna designs. We have completed that run and have results ready. We still need to resimulate the top five individuals, which I'll update this post with later. I attached the violin plot (though it should be fixed to not let the legend overlap the data). See this previous entry for the details of the run: http://radiorm.physics.ohio-state.edu/elog/GENETIS/198

Attachment 1: Violin_Plot.png
Violin_Plot.png
  Draft   Mon Apr 24 13:09:36 2023 Dylan WellsPUEO Plots Status

Plots we want to have for PUEO:

FScorePlot2D

Fitness_Scores_RG

VariablePlot (PUEO equivalent of LRT plot)

Veff_Plot (currently the veff is equivalent to the fitness score for PUEO)

Veffectives_RG

Rainbow_Plot 

Violin Plot

avg_freq

gain_vs_freq

polar_plotter

physics of results

 

Next steps:

Get the Error values out of the pueoSim root output (talking to Will)

Use output uan files from the new two-run XF simulation to test the frequency plots. (/fs/ess/PAS1960/HornEvolutionOSC/GENETIS_PUEO/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2023_04_21_Test_6)

Implement the physics of results plots into the loop (Talk to Bryan / Dennis)

Get the average Veff/Fitness score from the default gain pattern in pueoSim to compare our results to.

Attachment 1: Rainbow_Plot.png
Rainbow_Plot.png
Attachment 2: VariablePlot.png
VariablePlot.png
Attachment 3: Fitness_Scores_RG.png
Fitness_Scores_RG.png
Attachment 4: FScorePlot2D.png
FScorePlot2D.png
Attachment 5: Veff_plot.png
Veff_plot.png
Attachment 6: Veffectives_RG.png
Veffectives_RG.png
Attachment 7: ViolinPlot.png
ViolinPlot.png
  211   Tue Apr 11 00:36:49 2023 Bryan ReynoldsAREA physics of results plot first look

After some work, I've gotten the physics of results plotting script provided by Dennis working to compare the ARASim outputs from an AREA run to a set of reference data for the ARA bicone (provided by Alex). Among the outputs is a histogram of of events triggered vs cos(theta_nu) (attached here). This is the plot that was previously presented in GENETIS talks in the physics of results discussion.

Here I compared the best individual from the AREA results (Blue- "source_2") that I have on hand (only the ARASim output files from the most recent generation ran are currently saved) with the ARA bicone reference data (Red- "source_1"). Both datasets included a total of 150,000 NNU. Note that the AREA run used was a single frequency test, meaning that the radiation pattern was held constant for all frequencies in the band.

Also attached for reference are the gain pattern of the associated individual from the AREA output and the violin plot of the run producing the data.

Attachment 1: 20230410_AREA_PoR_CosTheta_bestIndiv_singleFreqTest.PNG
20230410_AREA_PoR_CosTheta_bestIndiv_singleFreqTest.PNG
Attachment 2: 20230201_singleFreqTest_100NPop_fitnessPlot_10Gens.PNG
20230201_singleFreqTest_100NPop_fitnessPlot_10Gens.PNG
Attachment 3: 20230410_AREA_mostFitIndivReUpload_singleFreqTest.PNG
20230410_AREA_mostFitIndivReUpload_singleFreqTest.PNG
  210   Wed Apr 5 17:21:07 2023 Nick KingH-pol XF Design

Work in progress. Update on H-pol XF design. The first plot is the gain pattern with ferrite rod sets (blue) vs. with nothing but the copper plates. 
The second plot is the gain pattern with everything but the ferrite rod sets vs. with nothing but the copper plates.
The ferrite rod sets function to narrow the gain pattern.

Attachment 1: Screenshot_(7).png
Screenshot_(7).png
Attachment 2: Screenshot_(8).png
Screenshot_(8).png
Attachment 3: HpolfromScript(5_10_2023).png
HpolfromScript(5_10_2023).png
Attachment 4: StephHpolwith_just_copper_plates_and_wires.png
StephHpolwith_just_copper_plates_and_wires.png
  209   Tue Apr 4 13:51:56 2023 Alex MFinal To Do List for PUEO Loop

At the main GENETIS meeting yesterday, we collected the last few things that need to be worked out in order to get the PUEO loop in working order. Here's a list

  • Skeletonize the xmacros (Alex)  04/10/23 In progress

    • This involves substituting some of the text to be variables that are replaced by the loop for each generation. 

    • Requires some slight modification of Part B1 in the loop.

  • We need to modify PUEOsim to read in different gain files (Dylan) Changes made 04/10/23  Testing to be done.

    • Currently, PUEOsim reads in files like vv_0, vh_el, etc. It needs to be modified to take in the gainfiles as arguments and read different ones for each individual.

    • Requiers slight modification of the batch job scripts, but these are relatively small

  • Slight modification on the fitness score read in script (Dylan)  Changes made 04/10/23  Testing to be done.

    • Now that PUEOsim is working and has been modified to output txt files with the effective volume, we just need to slightly amend the the fitness score script to read from those files.

  • Fix Ezio's comments on XFintoPUEO.py and modify to read in outputs from two files (Jacob) 04/10/23 in progress, further work this week

    • Since we are running XF twice (once for each power source), we need the conversion script to read in from two files and print out to 8 files (vv_0, vh_el, etc)

  208   Wed Mar 29 18:36:29 2023 Alex MGENETIS Working Meeting Update

This is an entry for the usual Wednesday working meeting GENETIS holds. We are largely carrying on from last week's hackathon hammering out the remaining pieces that need to be fixed. See the previous ELOG post for a list of those.

Alex

Amy pointed out on the Monday call that the proper way to simulate the ANITA antenas is to use one source at a time. I modified the script I had so that it makes two simulations per antenna. The first one will use the power source connected to the "VPol" ridges and the second one uses the one connected to the "HPol" ridges. After checking this, it looks like the asymmetry I had pointed out before fell away. In other words, I think XF only wanted to use a single power source anyway. So now we should be able to produce the VV, HH, VH, and HV data that icemc and PUEOsim need.

Ryan and I also worked a bit on the slopes of the ridges. We experimented with the parameter that affects the curvature, which seems to be able to be too large. But many of the designs still look to have almost no slope and many still caved inward rather than sloping outward. We're still working on figuring out what causes that, but I think it means we need another constraint on distance of the top of the inner ridges from the center. 

We also tried figuring out why the sides of the curved part of the ridges don't stay in the same plane as the straight part of the ridges. I'm confident that they do stay in a single plane (I attached a Mathematica notebook that shows as much by finding that the torsion of the curve is zero; for some reason I couldn't print it to a PDF). We think that we should be able to rotate the curve into the same plane as the straight part of the ridge, but I haven't figured out how yet.

 Nick and I continued working on the HPol antenna. We want to check if there are any other things in Steph's example XF file that are significant to the results of the simulation (versus just being there as a representation of the model). It looks like there are, and Nick is working to figure out what they are by deleting them (in a copy) and generating simulation results for them to compare to the original. Otherwise, the most significant parts (the copper plates) are now being made in a script and just need to be connected to one another.

 

Dylan

I tried to build root from source again and ran into an error 3 hours into the build. I messaged Will and asked if he knew anything about the error. I then reran the build with Will's suggested change and ran into the same error 3 hours later. I did, however, manage to build pueo by sourcing the installation of root in Will's shared pueo directory. I'm now testing getting a txt output file from the simulation as it turns out my initial solution didn't work.

Update:

I got a working version of root installed. Also, I was able to modify pueoSim to output a veff.txt file. Now, I need to modify where it reads in the gain files, and then modify the icemc specific bash scripts to work for pueosim.

Attachment 1: Modeling_ANITA_Ridges.nb
(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Mathematica 12.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       158,          7]
NotebookDataLength[    141335,       3108]
NotebookOptionsPosition[    137462,       3039]
NotebookOutlinePosition[    137824,       3055]
CellTagsIndexPosition[    137781,       3052]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[""], "Input",
 CellChangeTimes->{{3.889104537246646*^9, 3.8891045516248693`*^9}, {
   3.88910472825602*^9, 3.889104729415251*^9}, 
   3.889118788593347*^9},ExpressionUUID->"f2d7bf67-519b-4366-9a10-\
f19376de6bb8"],

Cell["<\
Here, I will use an example ridge that I have made and tested in XF to \
demonstrate how the curved part of the ridges slope in.
Here is a figure that represents one of these ridges. We are viewing it \
directly at the edge of the ridge, so the blue line actually represents the \
side. The purple curve should lie directly aligned with the blue line but \
doesn[CloseCurlyQuote]t. The same goes for the green line and orange/red \
lines (which do lie in the same plane, but that plane isn[CloseCurlyQuote]t \
aligned with the other side) below, which is the other side of the ridge.\
\>", "Text",
 CellChangeTimes->{{3.889118836397954*^9, 
  3.889119017191614*^9}},ExpressionUUID->"0859e4b4-741b-4eea-b2b6-\
e446b9af7816"],

Cell[BoxData[
 RowBox[{
  RowBox[{"x0", "=", "4"}], ";", " ", 
  RowBox[{"y0", "=", "4"}], ";", 
  RowBox[{"z0", "=", "0"}], ";", " ", 
  RowBox[{"yf", "=", "6"}], ";", " ", 
  RowBox[{"H", "=", "30"}], ";", " ", 
  RowBox[{"zf", "=", "30"}], ";", " ", 
  RowBox[{"xf", "=", "zf"}], ";", " ", 
  RowBox[{"[Beta]", "=", "2"}], ";", 
  RowBox[{"[Tau]", "=", "0.26"}], ";"}]], "Input",
 CellChangeTimes->{{3.8891047313587914`*^9, 3.889104784350019*^9}, {
  3.889105008478373*^9, 3.889105011515078*^9}, {3.889106004732277*^9, 
  3.88910602661027*^9}, {3.889112979624475*^9, 3.889112979661337*^9}, {
  3.8891130240801353`*^9, 3.889113037799301*^9}},
 CellLabel->
  "In[433]:=",ExpressionUUID->"fb3dee39-fae9-47d5-bb54-52d21df6980e"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"ParametricPlot3D", "[", 
  RowBox[{
   RowBox[{"{", "[IndentingNewLine]", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{
       RowBox[{"x0", "+", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"zf", "-", "x0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{"y0", "+", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"yf", "-", "y0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{
        RowBox[{
         RowBox[{"(", 
          RowBox[{"zf", "-", "z0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
      "}"}], ",", "[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"x0", "+", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"zf", "-", "x0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{
        RowBox[{"-", "y0"}], "-", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"yf", "-", "y0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{
        RowBox[{
         RowBox[{"(", 
          RowBox[{"zf", "-", "z0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
      "}"}], ",", "[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"x0", "+", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"xf", "-", "x0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", "y0", ",", "z0"}], "}"}], ",", "[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"x0", "+", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"xf", "-", "x0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{"-", "y0"}], ",", "z0"}], "}"}], ",", "[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"xf", "+", 
        RowBox[{
         RowBox[{"xf", "/", "[Tau]"}], "*", "t"}]}], ",", "yf", ",", "zf"}], 
      "}"}], ",", "[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"xf", "+", 
        RowBox[{
         RowBox[{"xf", "/", "[Tau]"}], "*", "t"}]}], ",", 
       RowBox[{"-", "yf"}], ",", "zf"}], "}"}], ",", "[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"xf", "+", 
        RowBox[{
         RowBox[{"zf", "/", "[Tau]"}], "*", "t"}]}], ",", 
       RowBox[{"y0", "+", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"yf", "-", "y0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{
        RowBox[{"zf", "/", "[Tau]"}], "*", "t"}]}], "}"}], ",", 
     "[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"xf", "+", 
        RowBox[{
         RowBox[{"zf", "/", "[Tau]"}], "*", "t"}]}], ",", 
       RowBox[{
        RowBox[{"-", "y0"}], "-", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"yf", "-", "y0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{
        RowBox[{"zf", "/", "[Tau]"}], "*", "t"}]}], "}"}], ",", 
     "[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"x0", "+", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"zf", "-", "x0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{"y0", "+", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"yf", "-", "y0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{"[Beta]", "*", 
        RowBox[{"Log", "[", 
         RowBox[{
          RowBox[{
           RowBox[{"t", "/", "[Tau]"}], "*", 
           RowBox[{"(", 
            RowBox[{
             RowBox[{"Exp", "[", 
              RowBox[{"zf", "/", "[Beta]"}], "]"}], "-", "1"}], ")"}]}], "+",
           "1"}], "]"}]}]}], "}"}], ",", "[IndentingNewLine]", 
     RowBox[{"{", 
      RowBox[{
       RowBox[{"x0", "+", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"zf", "-", "x0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{
        RowBox[{"-", "y0"}], "-", 
        RowBox[{
         RowBox[{
          RowBox[{"(", 
           RowBox[{"yf", "-", "y0"}], ")"}], "/", "[Tau]"}], "*", "t"}]}], 
       ",", 
       RowBox[{"[Beta]", "*", 
        RowBox[{"Log", "[", 
         RowBox[{
          RowBox[{
           RowBox[{"t", "/", "[Tau]"}], "*", 
           RowBox[{"(", 
            RowBox[{
             RowBox[{"Exp", "[", 
              RowBox[{"zf", "/", "[Beta]"}], "]"}], "-", "1"}], ")"}]}], "+",
           "1"}], "]"}]}]}], "}"}]}], "[IndentingNewLine]", "}"}], ",", 
   RowBox[{"{", 
    RowBox[{"t", ",", "0", ",", "[Tau]"}], "}"}]}], "]"}]], "Input",
 CellChangeTimes->{{3.889104789299713*^9, 3.889105080982005*^9}, {
   3.88910513362922*^9, 3.889105134787335*^9}, {3.889105176753415*^9, 
   3.889105183526766*^9}, {3.889105234070648*^9, 3.8891053106544733`*^9}, {
   3.8891053894877863`*^9, 3.889105467143161*^9}, {3.889105814148295*^9, 
   3.889105946276293*^9}, 3.88911016079349*^9, 3.889111844551866*^9},
 CellLabel->
  "In[434]:=",ExpressionUUID->"a2747aaf-59c9-498b-a918-186b6556d2ae"],

Cell[BoxData[
 Graphics3DBox[{{{}, {}, 
    TagBox[
     {RGBColor[0.368417, 0.506779, 0.709798], AbsoluteThickness[2], 
      Line3DBox[CompressedData["
1:eJwVjHk41Isexh1ahha/2fyQiIZkG2Mf/JrXcitCi4RzSUI8t1G3EUqbJCod
RyqpQ9f2KGSo64QkmpTUTWWP0mI5kVD2/c75432+z/t5Pu9Xc+/BHUGyMjIy
rtLISePx7o+1MjIEVK0qZf++4511NZyEnA0FF57G6NEINETP1GdIedNN5aN2
bTGCX2yHPu8kCFyo4/9h9wsBsF/vVW5LFohv2mfkrSEw/et90zOyBCK25bfK
tWUJlgT2qbnbEXh3oihwyWIC9EEyear1nqB00EIpN4ZA6pPMZ8sVCHx86HZw
tFUiUFnUQHNZTIfS1rgLKiwCGzn9H360Ngg+GNEGrykwQN+3lWGqS2Cq1fLq
cOsXgc6zO10cOxaCzj6S1LoTkDjcynmbNSKoD35xUmeHEmaXilYfPU5g1cfy
3r0Gc4KJNxkptV7KOC/apLE7hwBT6Je/1EEOn44VvfNNUMXh+qnHOa8JJPE2
Vrh50KDHs5SEpKoh87fhlbRJAq2pxtU/iBUw051oDnmrDv0NNbP/W0tHQs6p
17IqdPiNWJouil6DOy3ll5660UFe6Tp/OZ2JplZjt8RYTRxsGHnTHkFH/E6n
DQ3jbOh9eDrP+I8WkqoU7m7PoiOMn+lXF6MMcTAp25C7FqOK+2x6XtDhODQd
daBLFaMeT5/syePAdXOX8M5POmJst/urWq2GapDiqv7H2lgkogTNqxmwEV8v
OVmlgQNT7KeFtTqYm++oUN3IgHDyR/TzFZrIEZctEnatw84Tnu8eH2JgUp/o
NPTQwvXaUtnpKV1kdo2mp6UxYF1wJyMlZS0eBYW5S+bWg1fYsvxKDQNDDOc9
uyQc1HBe8s+S+lAPuar2fYiBLxf37BIt1cFUyEdRjLoB3OJSW/YqM7FpKNKp
x2IdiPrf7aJsDNFx9QjP2pGJbwG0sJJTuuhNSau3czfC7t+iTP9xkAlHDikb
L1mPge4gsYMXF5yv1R+F15ggXukkFg/poS+vh57BN8Zms26DcQkTq84VbbOw
MMBo9nh4RaUxxF1bOGnfmLimzyeYwYb49Nq8fIOAB4VjzZJwJgsvVO3MRy4Z
wXa5w6aqlzzUyNnK3t3AgrWaJInbwgU3QTz/3s0E1UO932jBLCjKZR32jzFG
supXmcn3JlB9dSBCksyCxmkNW28dHlo6tn6JCjHFv5KVbxdVsrBc2+f+jloe
/vuR/f1GvylmHyyJLe9hgUepFEX6mmBhJM++LNIMA01vZbTpbIR3Mp44y5ii
yzntsWjGDOo7Pq8r5LPxc+Sih1OqKW41PtS4etwcm0oZ4yH+bDhzn91wMjRD
h7DgeQnNAq9WaAbFXWRDMmIzM1FvhlubJ28cSrBASm3YyeoSNkQGJu1vg8zR
ZcYs01exxENRtpXPJzbsBwObvOUtUBZwcT4m3RLap8l0lrwSnDnKriuyLCCs
MeXYa1ghNrLwtgxPCUbRF45ILC2RZJ53Zb7ACvBb4+HmowTjIH6VdrslXPqO
G3lx+RDktxaUxSpB+CgktuSQFY4WqjOLKvlI692fHVushNqMpsAfbD7isgdb
Qp2sMaigZR/boYS52wsT3FI+9N6r1dS9tMaZZLWEDDkSQu0C+Ruu1hBoq8xq
edsgYtnoYXUuiRm9yxb3hq0xUBzmq/LBBgV/KcqXe5KQ5Mx8HjtngyMHZtMj
d9uipcDVMf4UiUDHtbBRt0W4rfv6xn5b+PmHrCnNJ6EdGl9uVG0LeVda58tQ
CnpRtblyjSQ0FIR3XT0pzP0uFLP+TWFvsGZqqZSLHU5EDXtTGGx4c9JXRCF1
57Hz+5tI2JxIdLjsQ6HR67rGUASFJVyusLGZhOdwcXObP4X0QD1/RjSFL10p
vOw2EoktY1MBQgq84y7dXskUrrvue2jfSWI+65R91GkKvxYk9ffcp0DTXNxw
uo9Ep83lxtwCCi6Dow+MyikIVvo9Me8nsT88J81JLO0874TICgoRM2UlfVI+
Lf4zaKCYgnappoF8NYXuZuG17QMklLXaJnjSv0OSe6EGdRSqLzT5aA6R2Epb
rVYp9c60Nw2LOihEjmb/VT1KoqopN7CxWfp3Nf9xxQcK4s9zbYfHSLitLDOM
aKMQsif90qJPFHrqPV/ojpPo2FQ3rizdu/YGmaR0U3DPW1aYNEFi4sG3c7ul
HvlzPKz8OwWj3WGiPdMkjDKNC/v6KSiY/9NRdpjCvi2vAlgzJCrb7SIuSr3Z
yCrWlp8U0qzWeTyXcmeWu4Ar9T7Pxf/5fly6Y3ZYGs+R2Bcf/vbwGIUmDJzV
nqJgJ2O+vlvKx6rjbpCTFJ6d2bbrwAyFI98TVVPnScRMXwt4ME2h9FmJTukc
haL2r8tcFkgomuUZ+Ep7vrzKxMIChd5a+7kFKb8Z+mDs7/5/SZ4y2A==
       "]]},
     Annotation[#, "Charting`Private`Tag$112685#1"]& ], 
    TagBox[
     {RGBColor[0.880722, 0.611041, 0.142051], AbsoluteThickness[2], 
      Line3DBox[CompressedData["
1:eJwVjHk81Psexh1UQ4vfbH7IEs1ItjH2YX7Nx3IrQouEc0mWKa/bpNvYSpsk
CseRCjl0bS8lGdV1siXfJpG6qewRkuVEQtmX4c754/njeb/ez6MdcPIAX1ZG
RsZVGjlpPD7+sVVGBgM16xopxtBsb2MdI7FgR3HCyxh9EgbN0UtNOVLeekfl
jF1nDO8X7kT/QQyDhEbOH3a/YAjo7wJUOlN5ojv2OUVbMFj89YnZZVkMRey7
3yHXmcdbGzSi7m6HwcfzpUFr12CIPI6nLnQ85pWPWyoXxmCQ8SK3foMihvqe
up2c7hDzVOWbSS5ryKC8Ny5BlYahnYzRnh8dzbweY9J4uiIFyEf3Usz0MLTQ
YXVrsuMLT7f+wQDDjgb8K8/EDe4YEjvcLfiQN8VrOvb6gu4BZVheJ9Q4cw5D
m/sqhwMMJby59zlpDV4qcE24S+twAYaoAr/76xzk4PPZ0o++iWoQ1rTwvOAd
hlLYO6vdPEigz7YSB2eoQ+5vk5tI8xjqyDBBP7CNYK431xb8QRMMdtQt/28r
GSUWXHwnq0oGvykrM/noLfCgvfL6Szcywm8OXLuRTYXWDhO35FhtONk89b4r
goziDzrtaJ6lg37PyxXKf3QgpVbx0f48Mgrl5Po1xqiA6Bgu21y4FaaVjtoO
vSYjx4nFqJABNZj2ePniSBEDXHcPCB78JKMY7n5/NWsNUOMrbR59zgR5IcFr
06AgW9Htsgu1WhCyQH9Z0qALkpXuarWdFCSY/xH9aqM2FIgq5AUD2+Dgec+P
z09R0LwB1mvkoQO3G8plFxf0IHdgOjsri4Jsih/kpKVthWf8UHexZDuwS9o3
3KyjoAmK85FDYgbUMd5wruAGoBl8S/37BAV9STpySLhOFxaC+4QxmobgFpfR
HqBCRbsmIp2GLLcB1vS7XZStEXTfOs22caSib4Gk0LKLejCcltVk524Mh3+L
MvvHSSpyZOCy8eLtMDbIFzl4sYDxFfUJ0qkIe6ub/HBCH0aKhsg5HBPYbT5o
OCumos1XS/dZWhrCdP5seHWNCYgG9jCyvlFRugEHox4zgs/vLCp38NigeLZN
HE6loddqdhZT142Bu8FhV+0bNtTJcWUf7aAhG3VxCqudBaxE0conN1NAE8Pf
SMdoSEkuL8w/xgRS1b7KzH8yBbW3IRHiVBrSuqTF9dZlQ3v33i9RwWbwr1SV
e6U1NLSB6fPkQAMb/ttH/545agbLVWtjK4doiE2olkb6msLqVJF9RaQ5jLV+
kGGS6Si8l/LCWcYMBpyznguXzEHzQP+2Eg4d/ZxK8nDKMIO7LU+1bp2zgF3l
lNlgfzpyZtVnOhmZQ7eg+FUZyRLebtTmxyXRkXjKdmmuyRzu7p7PPJVoCWkN
oRdQGR0JDU27PvAtYMCcWmGgagVPhfnWPp/pyH48qNVbwRIqApNWYrKtgHkJ
z6YpKCNnhorrxjxLENSZMey1rCE2suSeDFsZGUcnnBZbWUGKRdHNlWJrAL8t
Hm4+ysiEz6lldlmBy8g5Yy8WB3j3O4orYpWR4FlwbNkpazhTokktreFA1vDx
/NiHyqghpzXoB50Dcfnj7SecbGBcUcc+tlsZSe6tzrHKOaD/Sb2u8Y0NXE5V
T8yRw5GAWayQ6WoDPKbqso63LUSsnw7TZOFoSf+G5eNJGxh7GOqr2mMLxX8p
KVR64khcsNQ/c9UWTocsZ0ce5kJ7satj/EUcBTluBVtNLoRz3be3jHLBzz94
... 2817 more lines ...
  207   Mon Mar 27 13:10:02 2023 Alex MGENETIS Hackathon Summary and Next Steps

This entry will serve to summarize what tasks we've completed and still need to complete after last week's GENETIS hackathon.

Alex

My focus was on the XF scripting for making the PUEO antenna. Before last week, we had a script which made the geometry of a PUEO-like antenna. The xmacro script has been modified in the following ways:

  • Now includes power sources connecting the ridges that are opposite each other. 
  • Generalized to use variables without hardcoding.
  • Reads in data from the output files of the PUEO GA.
  • Loops over all read in antennas to set up all of the simulations at once.

At this point, the script for setting up the simulations of the PUEO loop is just about ready for use. The only change to be made is to the frequency list. The script for printing out the gain data is also ready, though it only prints out the gain in theta and phi, not the cross polarization.

Here are some outstanding points that need to be hammered out, though they impede the quality and accuracy of a run rather than the actual functioning of the loop.

  • The shape of the ridges in the generated antennas from the GA are considerably different from the PUEO antenna.
    • This is likely something that can be fixed by adjusting the constraints--the subspace of the parameter space that leads to PUEO-like ridges may be very small as-is.
    • You can see an example of an antenna from the GA attached (viewed from slightly below). It looks dramatically different. This seems to be due to constraints on the height and width being too small, but the ridges are also clearly misshapen. 
  • The curve on the ridges looks like it needs some work.
    • For very PUEO-like antennas, the slopes look reasonable, but they do flare in or out slightly. This is more dramatic for ridges that deviate from PUEO's significantly.
    • My best guess is that the parametric form of the curves is placing the curves in a plane that is different from the rest of the ridge. This should be fixable by somehow constraining the curve to a given plane.
  • The simulation still only outputs polarization data for theta and phi, not the cross polarization.
    • It looks like XF naturally gives us the theta and phi polarization. It's not clear how to get the cross polarization gain (which we think means the gain when the signal is at 45 degrees).
    • One idea is to redo the simulation but with the antenna rotated 45 degrees in the azimuth. But I'm not certain that that iwll work.
    • Amy indicated that the correct way to do this is by simulating the antenna with just one power source at a time.
      • Leaving the VPol source would produce the VV and VH data and leaving the HPol would produce the HH and HV data (HV and VH could be flipped!).
  • Currently, the antennas have a fixed opening angle. We'd like to add this as a parameter, though at the moment it might be ok to forego that.  
  • We need to make sure that the power sources aren't too close together (fixed!).

To do for this week:

1. Modify the script to make two simulations for each antenna, each with only one power source.

2. Adjust the constriants on the parameters to fix the curvature.

3. When we begin a run, we will want to just evolve the height and the inner side length (these determine both the inner side length and the outer side length).

Dylan and Jacob

Dylan and Jacob focused on getting PUEOsim/icemc working, which will be the simulation software needed for the PUEO loop. Here's a summary from Dylan:

  • Plotting and bash scripts should be mostly good to go.
  • Currently have 4/5 of the PUEO prerequisites for pueoBuilder, and the GENETIS-specific code is ready to implement and test when it's built. I’m trying to build the correct root version one more time before today’s meeting, and if it fails again I’m going to ask Will.
  • The main thing left is to get the correct version of root installed, which while annoying, shouldn't take too long

To do for this week:
1. Once PUEOsim is working, run it with the usual settings to get the default performance. It will need to be submitted as a job array (ask Alex for help with this if you need; ask Will for advice on how many neutrinos to run).

 

Attachment 1: Weird_PUEO_Model.png
Weird_PUEO_Model.png
  206   Tue Mar 21 17:58:21 2023 Alex MGENETIS Hackathon Day 2

Today was day two of the GENETIS hackathon. See the previous entry for details on day one. 

 

Alex

I continued working on the XF scripting for the PUEO horn antenna. Amy showed me an actual horn antenna from ANITA in Lisa's office so I could get the dimensions and see how the loads (power sources in XF) were offset. Offsetting the power sources led to fixing the asyemmtry problem from yesterday. I tested offsetting the loads by various heights and found that they all give the same gain patterns except for when they overlap, proving that they were interfering with each other when they crossed.

There is still, however, an asymmetry between the x and y axes (but the gain patterns are now symmetric across either of them). This is more reasonable, though I'm not positive that it should be this way. I attached an image of the gain pattern to show this asymmetry. Note that it is still at 83 MHz, which is well outside the PUEO bandwidth, but higher frequency gain patterns show the same thing (but they have more nodes so they're harder to look at). I attached images from the x-axis, y-axis, and above of the gain pattern. One way to check this will be to compare to the data stored in PUEOsim/icemc and see if they demonstrate similar asymmetries.

My next step is to test the constraints we've decided on using the script. I'll try out a few different values of the parameters and then if everything is working I'll use the GA Ryan and Dylan wrote to generate many individuals and have XF make the models for them. We don't necessarily need to see the simulation outputs from those XF runs, we just need to see if we run into error. Beyond that, we need to figure out how to extract the proper gain data from XF to create the same format that PUEOsim and icemc use. 

Amy also mentioned that we should add the opening angle of the horn antenna as a gene. This may be a little tricky but should be doable. Once we are set with the current XF script and changing the data formatting to match what PUEOsim and icemc need, I'll work on adding that as a gene.

 

Dylan and Jacob

We tried to get IceMC running and able to read in gain files -  we failed. Something was wrong with my make files and Jacob’s c++ compiler, so neither of us got a working version of IceMC. We then switched gears to focus on pueoSim. I created a branch on the nicemc github to output a veff.txt in the format of IceMC, so we can reuse the already-made code. Jacob and I also have been trying to install pueoSim, but we’ve been running into many errors and issues from the “C++ Gods”. For the next steps, I will finish the veffective branch and create a pull request. Then, I will work on a branch to make it so pueoSim can read in a variable path  to the gain files.

 

Ryan

Tuesday: Created a new branch on the PEUO repository, version0.0,  and placed the repository in the same location as the Ara one for familiarity. I also added an alias to this directory onto the genstudents channel if people would like to add the path to their .bashrc's. I then went through the the Evolutionary_Loop directory and cleaned up any residual Ara based files that were not needed to run this loop. This will make navigating and troubleshooting easier as we finish building. This branch was then commited and pushed to the github and submitted a pull request.

Attachment 1: ANITA_Gain_X.png
ANITA_Gain_X.png
Attachment 2: ANITA_Gain_Y.png
ANITA_Gain_Y.png
Attachment 3: ANITA_Gain_Z.png
ANITA_Gain_Z.png
Attachment 4: Top_Down_ANITA.png
Top_Down_ANITA.png
  205   Mon Mar 20 17:32:42 2023 Alex MGENETIS Hackathon Day 1

Today was the first day of the GENETIS Hackathon. We are spending several days this week specifically tackling the PUEO project to get it into full form (or close to it). Here is a progress update after day 1.

 

Alex

I am working on the xmacro script for the ANITA antenna. Before today, we had a working xmacro script to make the geometry of the ANITA horn antenna. Now I am trying to modify it to make it 1) more true to the actual ANITA antenna (in terms of which parts are electrically connected) and 2) add in the power source and sensors so that we can get simulation results. I've attached the xmacro script here along with a picture of the geometry and some gain patterns. There are four ridges in the antenna. They are all connected by the outer walls of the antenna. However, only the ones directly across from each other are connected by a load (in this case, a power source, since we simulate as a radiator). So we have two power sources, one connected each "ridge bicone". 

In making this, I have generated some gain patterns. I want to test a few cases to see if the results coming from XF seem reasonable, though I don't know what I should expect the gain pattern to look like when I've done things correctly. Here are the options I'll compare:

  1. Just use one "ridge bicone".
  2. Use two "ridge bicones" with the walls but just one power source.
  3. Use two "ridge bicones" without the walls and two power sources.
  4. Use the full form, with two "ridge bicones", walls, and two power sources.

Case (4) is the one I expect to be correct. However, when I simulate that, I get a slightly asymmetric gain pattern compared to what I expect (I expect symmetry across the "ridge bicones"). You can see from the attached image that there is a strange preference in one corner. My guess is that this has to do with which ridges are set to be ground and which are set to 1V (the potential). Feel free to ask me for more details about these figures/scripts on slack and I'll fill them in on here. I'll clean up the script and add in full test cases later this week.

The image of the antenna I attached is a bird's eye view. The green lines represent the power sources I've connected between the ridges. They do appear to overlap, but my understanding is that they are not actually affecting each other (they should just be a representation of the power sources). 

The image of a gain pattern (which is 3D and also a bird's eye view) is for the case of the antenna with both power sources and the walls remaining (the antenna is still shown too, to demonstrate the asymmetry of the gain pattern). This is well outside of the frequency range ANITA cares about (83 MHz), and I haven't looked closely at the higher frequencies yet, but I still am surprised by the asymmetry. I'll update tomorrow with more gain patterns to compare.

 

Dylan and Jacob

Dylan and Jacob are working on the bash scripts for the PUEO loop. They are taking the parts of the bicone loop that are specific to ARA/bicones and changing them to be specific to the PUEO loop. 

All the bash scripting outside of implementing the new software we’re developing should now be complete (we just need to debug when we do test runs). The new GA is implemented into the PUEO loop. We tried and failed to build a version of pueoSim on our own. Will has provided us with a precompiled version and instructions for installing it on our users as well as access to the necessary pueoBuilder repo. Jacob and Dylan are scheduled to go through the installation with him on Thursday at 4pm in his office, M2024.

We have also found that peuoSim currently only outputs root files. So, we will need to create a conversion script or modify pueoSim for when we implement it into the loop. Currently, using IceMC looks to be the easiest way to get a test run going. For the next steps, we have a plan for making IceMC read in a variable file path name to avoid recompiles and issues with parallelization (Alex has given us the path to look at how ARA does it). Then, we will work on installing pueoSim and testing its current viability.

 

Bryan

Upon checking the existing plotting scripts used for previous GENETIS work, it appears that they can be used for PUEO with minimal changes. In order to test the plotting scripts, sample output data from the PUEO loop is needed, or at least test data that mimics the form of the output for the PUEO loop. After more progress is made with installing an MC package and the PUEO loop can be run to produce test outputs, the plotting scripts can be tested and implemented in the bash script.

Attachment 1: ANITA_Antenna_Project.xmacro
App.getActiveProject().getGeometryAssembly().clear();
var freq = [83.33, 100.00, 116.67, 133.33, 150.00, 166.67, 183.34, 200.00, 216.67, 233.34, 250.00, 266.67, 283.34, 300.00, 316.67, 333.34, 350.00, 366.67, 383.34, 400.01, 416.67, 433.34, 450.01, 466.67, 483.34, 500.01, 516.68, 533.34, 550.01, 566.68, 583.34, 600.01, 616.68, 633.34, 650.01, 666.68, 683.35, 700.01, 716.68, 733.35, 750.01, 766.68, 783.35, 800.01, 816.68, 833.35, 850.02, 866.68, 883.35, 900.02, 916.68, 933.35, 950.02, 966.68, 983.35, 1000.00, 1016.70, 1033.40, 1050.00, 1066.70] 
CreatePEC();
var units = " cm";
num_ridges = 4; // either 2 or 4
// Make the walls and a ridge
build_walls(10,1,30);
// Note that to avoid overlap, we need x0 >= y0
x0=0.04001; // previously 0.04
y0=0.04; // previously 0.04
build_ridges(x0, y0, 0.0, 0.1, 0.06, 0.3, 0.26, 0.1, 0.1, 1); 
CreateAntennaSource();
CreateGrid();
CreateSensors();
CreateAntennaSimulationData();
QueueSimulation();

// Try making copies of the ridge
var new_ridges = new EllipticalPattern();
Output.println(new_ridges.getInstances());
new_ridges.setInstances(7);
//new_ridges.clone();
//Output.println(new_ridges);

// Makes the outer walls of the horn antenna
// S is the side length of the bottom of the wall
// a is the coefficient for the linear function the walls extrude according to
function build_walls(S,m,H) 
{
	// Make the edges to define the square
	var edge1 = Line( new Cartesian3D(-S + units,-S + units, 0), new Cartesian3D(-S + units, S + units, 0));
	var edge2 = Line( new Cartesian3D(-S + units, S + units, 0), new Cartesian3D(S + units, S + units, 0));
	var edge3 = Line( new Cartesian3D(S + units,S + units, 0), new Cartesian3D(S + units, -S + units, 0));
	var edge4 = Line( new Cartesian3D(S + units,-S + units, 0), new Cartesian3D(-S + units, -S + units, 0));
	
	// Declare sketches to be made from the edges
	var wallSegment = new Sketch();
	var bottomSegment = new Sketch();
	wallSegment.addEdge(edge1);
	wallSegment.addEdge(edge2);
	wallSegment.addEdge(edge3);
	wallSegment.addEdge(edge4);
	bottomSegment.addEdge(edge1);
	bottomSegment.addEdge(edge2);
	bottomSegment.addEdge(edge3);
	bottomSegment.addEdge(edge4);

	// Let's start by making the bottom
	var bottomCover = new Cover(bottomSegment);
	var bottomRecipe = new Recipe();
	bottomRecipe.append( bottomCover );
	var bottomModel = new Model();
	bottomModel.setRecipe( bottomRecipe );
	// Add the surface
	//var bottom = App.getActiveProject().getGeometryAssembly().append(bottomModel);
	//bottom.name = "Bottom square";

	// Now we need to extrude the edges to get height
	var walls = new Extrude( wallSegment, H + units);				// Makes an Extrude
	var wallOptions = walls.getOptions();						// Gives the possible options for 
	// We will use the draft law option to extrude linearly
	wallOptions.draftOption = SweepOptions.DraftLaw;			// allows for draftlaw
	wallOptions.draftLaw = "("+m+"*x)";							// Set the expression for the extrude
	wallOptions.draftOption = 4;								// 4 indicates we use draftlaw
    //Walter - Change the gap type to Extended to get the desired shape
	wallOptions.gapType = SweepOptions.Extended; 				// I actually don't like this when we have x^2, but it doesn't do much for just x
    //Walter - Create a shell instead of a solid part
	wallOptions.createSolid = false;							// This way the shape isn't filled in
	walls.setOptions ( wallOptions );							// Sets the settings we assigned above

	// Make a recipe for a model
	var wallRecipe = new Recipe();
	wallRecipe.append(walls);
	var wallModel = new Model();
	wallModel.setRecipe(wallRecipe);
	wallModel.name = "Outer Walls";
	wallModel.getCoordinateSystem().translate(new Cartesian3D(0,0,0));	// Makes the model start at the origin

	// Set the material for these parts
	var wallProject = App.getActiveProject().getGeometryAssembly().append(wallModel);	// Adds the model to the project
	var pecMaterial = App.getActiveProject().getMaterialList().getMaterial( "PEC" );	// Makes the material available
	App.getActiveProject().setMaterial( wallProject, pecMaterial );						// Sets the material
	//App.getActiveProject().setMaterial( bottom, pecMaterial );						// Sets the material

}

// A function to build the inner ridges
// Here are the arguments, which are primarily used when making the LawEdges
// Bottom x distance from center
// Bottom y distance from center
// Top x distance from center
// Top y distance from center
// Full x
// Full y
// Full height
function build_ridges(x_0, y_0, z_0, x_f, y_f, z_f, tau, beta, S, m)
{

//	build_ridges(0.04, 0.04, 0.0, 0.1, 0.06, 0.3, 0.26, 0.1, 0.1, 1);

	// Logarithmic slopes
	//var Log1 = new LawEdge( "0.04 + u", "0.04 + 0.02/0.26*u", "1/10*ln((exp(3)-1.0)/0.26*u+1.0)", 0, 0.26); // alpha = z_max/beta
	//var Log2 = new LawEdge( "0.04 + u", "-0.04 - 0.02/0.26*u", "1/10*ln((exp(3)-1.0)/0.26*u+1.0)", 0, 0.26);

	var Log1 = new LawEdge( ""+x_0+" + ("+z_f+"-"+x_0+")/"+tau+"*u", ""+y_0+" + ("+y_f+"-"+y_0+")/"+tau+"*u", ""+beta+"*ln((exp("+z_f+"/"+beta+")-1.0)/"+tau+"*u+1.0)", 0, tau); // alpha = z_max/beta
	var Log2 = new LawEdge( ""+x_0+" + ("+z_f+"-"+x_0+")/"+tau+"*u", "-"+y_0+" - ("+y_f+"-"+y_0+")/"+tau+"*u", ""+beta+"*ln((exp("+z_f+"/"+beta+")-1.0)/"+tau+"*u+1.0)", 0, tau);


	// Inner straight slopes 
	var IS1 = new LawEdge( ""+x_0+" + ("+z_f+"-"+x_0+")/"+tau+"*u", ""+y_0+" + ("+y_f+"-"+y_0+")/"+tau+"*u", "("+z_f+"-"+z_0+")/"+tau+"*u", 0, tau); // a_0 + at, b_0 + bt, c_0 + ct
	var IS2 = new LawEdge( ""+x_0+" + ("+z_f+"-"+x_0+")/"+tau+"*u", "-"+y_0+" - ("+y_f+"-"+y_0+")/"+tau+"*u", "("+z_f+"-"+z_0+")/"+tau+"*u", 0, tau);

	// Bottom line
	var BL1 = new LawEdge(""+x_0+" + ("+x_f+"-"+x_0+")/"+tau+"*u", ""+y_0+"", ""+z_0+"", 0, tau);
	var BL2 = new LawEdge(""+x_0+" + ("+x_f+"-"+x_0+")/"+tau+"*u", "-"+y_0+"", ""+z_0+"", 0, tau);

	// Top line
	var TL1 = new LawEdge(""+z_f+" + "+x_f+"/"+tau+"*u", ""+y_f+"", ""+z_f+"", 0, tau);
	var TL2 = new LawEdge(""+z_f+" + "+x_f+"/"+tau+"*u", "-"+y_f+"", ""+z_f+"", 0, tau);

	// Outer Straight slopes
	var OS1 = new LawEdge( ""+x_f+" + "+z_f+"/"+tau+"*u", ""+y_0+" + ("+y_f+" - "+y_0+")/"+tau+"*u", ""+z_f+"/"+tau+"*u", 0, tau);
	var OS2 = new LawEdge( ""+x_f+" + "+z_f+"/"+tau+"*u", "-"+y_0+" - ("+y_f+" - "+y_0+")/"+tau+"*u", ""+z_f+"/"+tau+"*u", 0, tau);

	// Inner top line
	var ITL = new LawEdge( ""+z_f+"", "-"+y_f+" + 2*"+y_f+"/"+tau+"*u", ""+z_f+"", 0, tau);

	// Outer top line
	var OTL = new LawEdge( ""+x_f+" + "+z_f+"", "-"+y_f+" + 2*"+y_f+"/"+tau+"*u", ""+z_f+"", 0, tau);

	// Inner bottom line
	var IBL = new LawEdge( ""+x_0+"", "-"+y_0+" + 2*"+y_0+"/"+tau+"*u", ""+z_0+"", 0, tau);

	// Outer bottom line
	var OBL = new LawEdge( ""+x_f+"", "-"+y_0+" + 2*"+y_0+"/"+tau+"*u", ""+z_0+"", 0, tau);

	// Make the sketches
	var straightEdge1 = new Sketch(); 	// All straight edges (IS1, BL1, TL1, OS1)
	var straightEdge2 = new Sketch(); 	// All straight edges (IS2, BL2, TL2, OS2)	
	var curvedLog1 = new Sketch(); 		// Logarithmic edge (IS1 and Log1)
	var curvedLog2 = new Sketch(); 		// Logarithmic edge (IS2 and Log2)
	var topRectangle = new Sketch(); 	// Top rectangle
	var bottomRectangle = new Sketch(); // Bottom rectangle

	// Add the edges to the sketches
	straightEdge1.addEdges( [IS1, BL1, TL1, OS1] );	// Inner straight slope
	curvedLog1.addEdges( [IS1, Log1] );				// Right logarithm part
	straightEdge2.addEdges( [IS2, BL2, TL2, OS2] ); 	// Inner straight slope
	curvedLog2.addEdges( [IS2, Log2] );			 	// Left logarithm part
	topRectangle.addEdges( [ITL, OTL, TL1, TL2] );		// Top rectangle
	bottomRectangle.addEdges( [IBL, OBL, BL1, BL2] );	// Bottom Rectangle

	//WALTER - The Elliptical pattern is added as a recipe to the parts
	//In this case the location of the center and direction of the normal are simple, but for more complex scenarios, may need to use mroe functionality to find them.
	var ePattern = new EllipticalPattern();
	ePattern.setCenter(new CoordinateSystemPosition(0,0,0));
	ePattern.setNormal(new CoordinateSystemDirection(0,0,1));
	ePattern.setInstances(num_ridges);
	ePattern.setRotated(true);

	var cov = new Array();
	cov.push(new Cover(straightEdge1));
	cov.push(new Cover(straightEdge2));
	cov.push(new Cover(curvedLog1));
	cov.push(new Cover(curvedLog2));
	cov.push(new Cover(topRectangle));
	cov.push(new Cover(bottomRectangle));

	var pecMaterial = App.getActiveProject().getMaterialList().getMaterial( "PEC" );

	//WALTER - We can loop over all our parts and add them to the project as follows.  You can use similar concepts above.
	models = new Assembly();
	for(var w = 0; w < cov.length; w++)
	{
		var r = new Recipe();
		r.append(cov[w]);
		r.append(ePattern);
		var m = new Model();
		m.setRecipe(r);
		m.name = "Test Surface " + (w+1);
		//WALTER - Seperate array for the models, though we could just get them from the GemoetryAssembly again
		models.append(m);
		App.getActiveProject().setMaterial( m, pecMaterial );

	}

	// Work on the loft
	var vertex_position1 = curvedLog1.getPosition(curvedLog1.getVertexIds()[0]);	
	var vertex_position2 = curvedLog2.getPosition(curvedLog2.getVertexIds()[0]);

	var loft = new Loft(models.at(2).pickFace(new Cartesian3D (0, 0, 0), vertex_position1, 0.5), "0.0", models.at(3).pickFace(new Cartesian3D(0,0,0), vertex_position2, 0.5), "0.0");
	loft.setPart1(models.at(2));
	loft.setPart2(models.at(3));
		
	var r12 = new Recipe();
	r12.append( loft );
	r12.append(ePattern);
	var m12 = new Model();
	m12.setRecipe( r12 );
	m12.name = "Loft 1";
	models.append(m12);

	//WALTER - append the assembly to the project, then loop over it to assign the material
	var assembly = App.getActiveProject().getGeometryAssembly().append(models);
	for(x = 0; x < assembly.size(); x++)
	{
		Output.println(assembly.at(x));
		App.getActiveProject().setMaterial( assembly.at(x), pecMaterial );
	}

}



// CreatPEC Function
function CreatePEC() //borrowed from XF demo
{
    //Make the material.  We will use PEC, or Perfect Electrical Conductor:
    var pec = new Material();
    pec.name = "PEC";
    var pecProperties = new PEC();      // This is the electric properties that defines PEC
    var pecMagneticFreespace = new MagneticFreespace();     // We could make a material that acts as PEC and PMC, but in this case we just care about electrical components.
    var pecPhysicalMaterial = new PhysicalMaterial();
    pecPhysicalMaterial.setElectricProperties( pecProperties );
    pecPhysicalMaterial.setMagneticProperties( pecMagneticFreespace );
    pec.setDetails( pecPhysicalMaterial );
    // PEC is historically a "white" material, so we can easily change its appearance:
    var pecBodyAppearance = pec.getAppearance();
    var pecFaceAppearance = pecBodyAppearance.getFaceAppearance();  // The "face" appearance is the color/style associated with the surface of geometry objects
        pecFaceAppearance.setColor( new Color( 255, 255, 255, 255 ) );  // Set the surface color to white. (255 is the maximum intensity, these are in order R,G,B,A).
    // Check for an existing material
    if( null != App.getActiveProject().getMaterialList().getMaterial( pec.name ) )
    {
            App.getActiveProject().getMaterialList().removeMaterial( pec.name );
    }
	    App.getActiveProject().getMaterialList().addMaterial( pec );
}

function CreateAntennaSource()
{
    // Here we will create our waveform, create our circuit component definition for the feed, and create
    // a CircuitComponent that will attach those to our current geometry.
    var waveformList = App.getActiveProject().getWaveformList();
        // clear the waveform list
	    waveformList.clear();

    // Create a gaussian derivative input wave
    var waveform = new Waveform();
    var GDer = new GaussianDerivativeWaveformShape ();
    GDer.pulseWidth = 2e-9;
    waveform.setWaveformShape( GDer );
    waveform.name ="Gaussian Derivative";
    var waveformInList = waveformList.addWaveform( waveform );

    // Now to create the circuit component definition:
    var componentDefinitionList = App.getActiveProject().getCircuitComponentDefinitionList();
    // clear the list
    componentDefinitionList.clear();

    // Create our Feed
    var feed1 = new Feed();
    var feed2 = new Feed();

    feed1.feedType = Feed.Voltage; // Set its type enumeration to be Voltage.
    //feed2.feedType = Feed.Voltage; // Set its type enumeration to be Voltage.

    // Define a 50-ohm resistance for this feed
    var rlc = new RLCSpecification();
    rlc.setResistance( "50 ohm" );
    rlc.setCapacitance( "0" );
    rlc.setInductance( "0" );
    feed1.setImpedanceSpecification( rlc );
    feed1.setWaveform( waveformInList );  // Make sure to use the reference that was returned by the list, or query the list directly
    feed1.name = "50-Ohm Voltage Source";
    var feedInList = componentDefinitionList.addCircuitComponentDefinition( feed1 );


	feed2.setImpedanceSpecification( rlc );
    feed2.setWaveform( waveformInList );  // Make sure to use the reference that was returned by the list, or query the list directly
    feed2.name = "50-Ohm Voltage Source 2";
    var feedInList = componentDefinitionList.addCircuitComponentDefinition( feed2 );

    // Now create a circuit component that will be the feed point for our simulation
    var componentList = App.getActiveProject().getCircuitComponentList();
    componentList.clear();

    var component1 = new CircuitComponent();
	var component2 = new CircuitComponent();

	component1.name = "Source";
	component2.name = "Source";

    component1.setAsPort( true );
    component2.setAsPort( true );
    // Define the endpoints of this feed - these are defined in world position, but you can also attach them to edges, faces, etc.
    var coordinate1 = new CoordinateSystemPosition( -x0, 0, 0);
    var coordinate2 = new CoordinateSystemPosition( x0, 0, 0);
	var coordinate3 = new CoordinateSystemPosition( 0, -x0, 0);
    var coordinate4 = new CoordinateSystemPosition( 0, x0, 0);
    component1.setCircuitComponentDefinition( feed1 );
... 84 more lines ...
Attachment 2: ANITA_Horn.png
ANITA_Horn.png
Attachment 3: ANITA_Gain_Pattern_Both_Sources.png
ANITA_Gain_Pattern_Both_Sources.png
  204   Mon Mar 20 16:31:09 2023 Alex MInstalling PUEOsim

Will sent me some info on how to install PUEOsim. I attached a markdown file he sent for how to install PUEOsim. He also sent the path to pre-compiled installation of PUEOsim. Here's the path to the pre-compiled installation: /users/PAS0654/wluszczak/PUEO_shared

Here is his full message, which details that you must also run set_env.sh before running PUEOsim:

a pre-compiled version is located at /users/PAS0654/wluszczak/PUEO_shared . Inside that directory, there's a set_env.sh script that you will need to source before running anything (hopefully this works, though there's a high probability you might run into permissions issues with the dependencies).

To run PUEOsim, use the following (see here for instructions: https://github.com/PUEOCollaboration/pueoSim):

./simulatePueo -i {inputFile} -o {outputDirectory} -r {runNumber} -n {numberOfNeutrinos} -e {energyExponent}

The outputs will be root files, but it should be possible (either modifying our own version directly or with a script) to print out the effective volume to a .txt to read.

 

Attachment 1: CentOS_7_install.md
#pueoBuilder Installation Tutorial

This tutorial will guide you through the process of building the tools included in pueoBuilder from scratch, including the prerequisites and any environment variables that you will need to set. This sort of thing is always a bit of a nightmare process for me, so hopefully this guide can help you skip some of the frustration that I ran into. I did not have root acces on the system I was building on, so the instructions below are what I had to do to get things working with local installations. If you have root access, then things might be a bit easier. For reference I'm working on CentOS 7, other operating systems might have different problems that arise. 

##Prerequisites
As far as I can tell, the prerequisites that need to be built first are:

-cmake 3.21.2 (I had problems with 3.11.4)
-gcc 11.1.0 (9.X will not work)
-fftw 3.3.9
-gsl 2.7.1 (for ROOT)
-ROOT 6.24.00

###CMake
You can download the source files for CMake here: https://cmake.org/download/. Untar the source files with:

    tar -xzvf cmake-3.22.1.tar.gz

Compiling CMake is as easy as following the directions on the website: https://cmake.org/install/, but since we're doing a local build, we'll use the `configure` script instead of the listed `bootstrap` script. As an example, suppose that I downloaded the above tar file to `/scratch/wluszczak/cmake`: 

    mkdir install
    cd cmake-3.22.1
    ./configure --prefix=/scratch/wluszczak/cmake/install
    make
    make install

You should additionally add this directory to your `$PATH` variable:

    export PATH=/scratch/wluszczak/cmake/install/bin:$PATH

To check to make sure that you are using the correct version of CMake, run:

    cmake --version

and you should get:

    cmake version 3.22.1

    CMake suite maintained and supported by Kitware (kitware.com/cmake).

### gcc 11.1.0

Download the gcc source from github here: https://github.com/gcc-mirror/gcc/tags. I used the 11.1.0 release, though there is a more recent 11.2.0 release that I have not tried. Once you have downloaded the source files, untar the directory:

    tar -xzvf gcc-releases-gcc-11.1.0.tar.gz

Then install the prerequisites for gcc:
    
    cd gcc-releases-gcc-11.1.0
    contrib/download_prerequisites

One of the guides I looked at also recommended installing flex separately, but I didn't seem to need to do this, and I'm not sure how you would go about it without root priviledges, though I imagine it's similar to the process for all the other packages here (download the source and then build by providing an installation prefix somewhere)

After you have installed the prerequisites, create a build directory:

    cd ../
    mkdir build
    cd build

Then configure GCC for compilation like so:

    ../gcc-releases-gcc-11.1.0/configure -v --prefix=/home/wluszczak/gcc-11.1.0 --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --program-suffix=-11.1

I don't remember why I installed to my home directory instead of the /scratch/ directories used above. In principle the installation prefix can go wherever you have write access. Once things have configured, compile gcc with:

    make -j $(nproc)
    make install

Where `$(nproc)` is the number of processing threads you want to devote to compilation. More threads will run faster, but be more taxing on your computer. For reference, I used 8 threads and it took ~15 min to finish. 

Once gcc is built, we need to set a few environment variables:

    export PATH=/home/wluszczak/gcc-11.1.0/bin:$PATH
    export LD_LIBRARY_PATH=/home/wluszczak/gcc-11.1.0/lib64:$LD_LIBRARY_PATH

We also need to make sure cmake uses this compiler:

    export CC=/home/wluszczak/gcc-11.1.0/bin/gcc-11.1
    export CXX=/home/wluszczak/gcc-11.1.0/bin/g++-11.1
    export FC=/home/wluszczak/gcc-11.1.0/bin/gfortran-11.1

If your installation prefix in the configure command above was different, substitute that directory in place of `/home/wluszczak/gcc-11.1.0` for all the above export commands. To easily set these variables whenever you want to use gcc-11.1.0, you can stick these commands into a single shell script:

    #load_gcc11.1.sh
    export PATH=/home/wluszczak/gcc-11.1.0/bin:$PATH
    export LD_LIBRARY_PATH=/home/wluszczak/gcc-11.1.0/lib64:$LD_LIBRARY_PATH

    export CC=/home/wluszczak/gcc-11.1.0/bin/gcc-11.1
    export CXX=/home/wluszczak/gcc-11.1.0/bin/g++-11.1
    export FC=/home/wluszczak/gcc-11.1.0/gfortran-11.1

(again substituting your installation prefix in place of mine). You can then set all these environment variables by simply running:
    
    source load_gcc11.1.sh

Once this is done, you can check that gcc-11.1.0 is properly installed by running:

    gcc-11.1 --version

Note that plain old

    gcc --version

might still point to an older version of gcc. This is fine though. 

###FFTW 3.3.9
Grab the source code for the appropriate versino of FFTW from here: http://www.fftw.org/download.html

However, do NOT follow the installation instructions on the webpage. Those instructions might work if you have root privileges, but I personally couldn't seem to to get things to work that way. Instead, we're going to build fftw with cmake. Untar the fftw source files:

    tar -xzvf fftw-3.3.9.tar.gz

Make a build directory and cd into it:
    
    mkdir build
    cd build

Now build using cmake, using the flags shown below. For reference, I downloaded and untarred the source file in `/scratch/wluszczak/fftw/build`, so adjust your install prefix accordingly to point to your own build directory that you created in the previous step.

    cmake -DCMAKE_INSTALL_PREFIX=/scratch/wluszczak/fftw/build/ -DBUILD_SHARED_LIBS=ON -DENABLE_OPENMP=ON -DENABLE_THREADS=ON ../fftw-3.3.9
    make install -j $(nproc)

Now comes the weird part. Remove everything except the `include` and `lib64` directories in your build directory (if you installed to a different `CMAKE_INSTALL_PREFIX`, the include and lib64 directories might be located there instead. The important thing is that you want to remove everything, but leave the `include` and `lib64` directories untouched):

    rm *
    rm -r CMakeFiles

Now rebuild fftw, but with an additional flag:

    cmake -DCMAKE_INSTALL_PREFIX=/scratch/wluszczak/fftw/build/ -DBUILD_SHARED_LIBS=ON -DENABLE_OPENMP=ON -DENABLE_THREADS=ON -DENABLE_FLOAT=ON ../fftw-3.3.9
    make install -j $(nproc)

At the end of the day, your fftw install directory should have the following files:

    include/fftw3.f  
    include/fftw3.f03
    include/fftw3.h  
    include/fftw3l.f03  
    include/fftw3q.f03 
    lib64/libfftw3f.so          
    lib64/libfftw3f_threads.so.3      
    lib64/libfftw3_omp.so.3.6.9  
    lib64/libfftw3_threads.so
    lib64/libfftw3f_omp.so        
    lib64/libfftw3f.so.3        
    lib64/libfftw3f_threads.so.3.6.9  
    lib64/libfftw3.so            
    lib64/libfftw3_threads.so.3
    lib64/libfftw3f_omp.so.3      
    lib64/libfftw3f.so.3.6.9    
    lib64/libfftw3_omp.so             
    lib64/libfftw3.so.3          
    lib64/libfftw3_threads.so.3.6.9
    lib64/libfftw3f_omp.so.3.6.9  
    lib64/libfftw3f_threads.so  
    lib64/libfftw3_omp.so.3           
    lib64/libfftw3.so.3.6.9

Why do we have to do things this way? I don't know, I'm bad at computers. Maybe someone more knowledgeable knows. I found that when I didn't do this step, I'd run into errors that pueoBuilder could not find some subset of the required files (either the ones added by building with `-DENABLE_FLOAT`, or the ones added by building without `-DENABLE_FLOAT`). 

Once fftw has been installed, export your install directory (the one with the include and lib64 folders) to the following environment variable:

    export FFTWDIR=/scratch/wluszczak/fftw/build

Again, substituting your own fftw install prefix that you used above in place of `/scratch/wluszczak/fftw/build`

###gsl 2.7.1
gsl 2.7.1 is needed for the `mathmore` option in ROOT. If you have an outdated version of gsl, ROOT will still compile, but it will skip installing `mathmore` and `root-config --has-mathmore` will return `no`. To fix this, grab the latest source code for gsl from here: https://www.gnu.org/software/gsl/. Untar the files to a directory of your choosing:

    tar -xzvf gsl-latest.tar.gz

For some reason I also installed gsl to my home directory, but in principle you can put it wherever you want. 

    mkdir /home/wluszczak/gsl
    ./configure --prefix=/home/wluszczak/gsl
    make
    make check
    make install

To make sure ROOT can find this installation of gsl, you'll again need to set an environment variable prior to building ROOT:

    export GSL_ROOT_DIR=/home/wluszczak/gsl/
    
I also added this to my $PATH variable, though I don't remember if that was required to get things working or not:

    export PATH=/home/wluszczak/gsl/bin/:$PATH 
    export LD_LIBRARY_PATH=/home/wluszczak/gsl/lib:$LD_LIBRARY_PATH

###ROOT 6.24.00
Download the specific version of ROOT that you need from here: https://root.cern/install/all_releases/

You might need to additionally install some of the dependencies (https://root.cern/install/dependencies/), but it seems like everything I needed was already installed on my system. 

Untar the source you downloaded:
    
    tar -xzvf root_v6.24.00.source.tar.gz

Make some build and install directories:

    mkdir build install
    cd build

Run CMake, but be sure to enable the fortan, mathmore and minuit2 options. For reference, I had downloaded and untarred the source files to `/scratch/wluszczak/root`. Your installation and source paths will be different.

    cmake -DCMAKE_INSTALL_PREFIX=/scratch/wluszczak/root/install/ /scratch/wluszczak/root/root-6.24.00/ -Dfortran=ON -Dminuit2=ON -Dmathmore=ON

Note: if you end up with an error related to compiling XROOTD, then add -Dxrootd=OFF to the original cmake command above.

Then proceed to start the build:

    cmake --build . --target install -j $(nproc)
    

If everything has worked then after the above command finishes running, you should be able to run the following file to finish setting up ROOT:

    source ../install/bin/thisroot.sh

##pueoBuilder
By this point, you should have working installations of CMake 3.21.2, gcc-11.1.0, fftw 3.3.9, and ROOT 6.24.00. Additionally, the following environment variables should have been set:

    export PATH=/scratch/wluszczak/cmake/install/bin:$PATH

    export PATH=/home/wluszczak/gcc-11.1.0/bin:$PATH
    export LD_LIBRARY_PATH=/home/wluszczak/gcc-11.1.0/lib64:$LD_LIBRARY_PATH

    export CC=/home/wluszczak/gcc-11.1.0/bin/gcc-11.1
    export CXX=/home/wluszczak/gcc-11.1.0/bin/g++-11.1
    export FC=/home/wluszczak/gcc-11.1.0/gfortran-11.1

    export FFTWDIR=/scratch/wluszczak/fftw/build

At this point, the hard work is mostly done. Check out pueoBuilder with:

    git clone git@github.com:PUEOCollaboration/pueoBuilder 

set the following environment variables:

    export PUEO_BUILD_DIR=/scratch/wluszczak/PUEO/pueoBuilder
    export PUEO_UTIL_INSTALL_DIR=/scratch/wluszczak/PUEO/pueoBuilder
    export NICEMC_SRC=${PUEO_BUILD_DIR}/components/nicemc
    export NICEMC_BUILD=${PUEO_BUILD_DIR}/build/components/nicemc
    export PUEOSIM_SRC=${PUEO_BUILD_DIR}/components/pueoSim
    export LD_LIBRARY_PATH=${PUEO_UTIL_INSTALL_DIR}/lib:$LD_LIBRARY_PATH

Where $PUEO_BUILD_DIR and $PUEO_UTIL_INSTALL_DIR point to where you cloned pueoBuilder to (in my case, `/scratch/wluszczak/PUEO/pueoBuilder`. Now you should be able to just run:

    ./pueoBuilder.sh

Perform a prayer to the C++ gods while you're waiting for it to compile, and hopefully at the end of the day you'll have a working set of PUEO software. 

##Issues I Ran Into
If you already have an existing installation of ROOT, you may still need to recompile to make sure you're using the same c++ standard that the PUEO software is using. I believe the pre-compiled ROOT binaries available through their website are insufficient, though maybe someone else has been able to get those working. 

If you're running into errors about c++ standard or compiler version even after you have installed gcc-11.1.0, then for some reason your system isn't recognizing your local installation of gcc-11.1.0. Check the path variables ($PATH and $LD_LIBRARY_PATH) to make sure the gcc-11.1.0 `bin` directory is being searched.

If you're running into an error that looks like:
        
    CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
    Please set them or make sure they are set and tested correctly in the CMake files:
    FFTWF_LIB (ADVANCED)

then pueoBuilder can't seem to find your fftw installation (or files that are supposed to be included in that installation), try rebuilding with different flags according to which files it seems to think are missing.

If it seems like pueoBuilder can't seem to find your fftw installation at all (i.e. you're getting some error that looks like `missing: FFTW_LIBRARIES` or `missing: FFTW_INCLUDES`), check the environment variables that are supposed to point to your fftw installation (`$FFTWDIR`) and make sure there are the correct files in the `lib` and `include` subdirectories. 
  203   Mon Mar 20 13:35:25 2023 Amyinfo on format for PUEO antenna files

William Luszczak  1:30 PM

This is the directory with the current PUEO antenna data files: https://github.com/PUEOCollaboration/pueoSim/tree/main/data/antennas. Each type of antenna will need several files:

  • vv_0 and hh_0 describe the on axis v and h pol gain as a function of frequency. Gain is listed as a multiplicative factor (not in dB, if I'm remembering correctly)
  • hv_0 and vh_0 describe the on axis cross polarization gain
  • vv_az and hh_az describe the off-axis gain via multiplicative factors of the boresight gain. These are currently listed as a function of frequency for reference angles of 0,10,20,30,40,50,60,70,80, and 90 degrees, though we can always adjust the reference angles if needed.
  • vv_el and hh_el are similar to above, but for gain as a function of elevation angle instead of azimuthal angle.

So for example, the total vpol gain in a particular frequency bin for a signal incident at azimuthal angle az and elevation angle el would be vv_0(f)*vv_az(f, az)*vv_el(f, el)


New

1:31

We can also potentially adjust this if it would be more convenient for the GENETIS people to output antenna information in a different format (or at different reference angles or whatever). The important thing is that the boresight h, v, and cross pol gains are all defined, as well as the off-axis response (as a function of azimuth and elevation)

  202   Mon Mar 20 12:37:38 2023 AmyANITA/PUEO pictures

Here are some ANITA/PUEO pictures that I received from Christian Mike that might be helpful.  I include his descriptions as well.

The one with the black crates in the background is the  ANITA 1 and ANITA 2 form factor and the one in the anechoic chamber is the ANITA 3 and ANITA 4 form factor. I dimensioned out an ANITA 3/4 antenna, in CAD space, to give you a better idea of the ridge profile. The ANITA 1/2 CAD models we have, I found, are inaccurate.

Attached are images of the PUEO antenna array geometry. One image annotates the approximate locations of the Vpol feed with the top antenna feed as the origin.

 

 

 

 

Attachment 1: IMG_2362.jpg
IMG_2362.jpg
Attachment 2: IMG_2364.jpg
IMG_2364.jpg
Attachment 3: IMG_2365.jpg
IMG_2365.jpg
  201   Tue Mar 7 00:06:57 2023 Bryan ReynoldsRetroactive AREA update: January 18, 2022 AREA run- No linear freq. dependence test w/ increased NPop

The following is a run summary of an AREA test using 100 individuals per generation, without the linear frequency dependence on the gain, with the frequency fixed (i.e. the same gain pattern is produced for all frequencies). This run was a preliminary test of the AREA algorithm with a larger NPop (100 individuals per generation) after seeing promising results in the previous test that only used 20 individuals per generation. The percentages of selection methods/operators used attempted to mimic the optimal percentages used for the PAEA Bicone Loop, but because the algorithms do not set these in the same manner, these are highly unlikely to be the best percentages to use. The results show a very quick plateau in fitness score with a loss in diversity of solutions after a low number of generations, potentially meaning that a poor breakdown of selection methods/operators was chosen. This result seems to underscore the need for a test loop-style optimization for AREA to determine the best breakdown of selection methods and operators to use for AREA.

Run details:

  • Run Type
    • AREA
  • Run Date
    • January 18, 2023
  • Run Name
    • 20230118breynoldsrun_noLinearDependAREATest_38RCO_2RM_58TCO_2TM_150000NNU_2Seeds
  • Why are we doing this run?
    • This test increased the number of individuals to 100 and attempted to mimic the percentages of selection methods and operators found to be optimal for the PAEA loop.
  • What is different about this run from the last?
    • The previous test showed slow/minimal evolution after ~12 generations, and it was speculated that this was due to a small NPop of 20 individuals. This test uses an increased NPop of 100 individuals.
  • Symmetric, asymmetric, linear, nonlinear (what order):
    • N/A
  • Number of individuals (NPOP):
    • 100
  • Number of neutrinos thrown in AraSim (NNT):
    • 300,000 Total (150,000 NNU x 2 Seeds)
  • Operatiors used (% of each):
    • 96% Cross-Over, 4% Mutation
  • Selection methods used (% of each):
    • 40% Roullette, 60% Tournament
  • Are we using the database?
    • N/A

 

Results:

  • Summary and comments on results
    • The fitness score quickly plaeaued and diversity of solutions was lost, potentially due to a unsuccessful choice of selection method and opterator percentages.
    • An important future step is to work with Ryan to create a test loop optimization for the AREA algorithm, as it is written differently in how it is passed selection method and operator percentages and requires its own optimization to find the optimal ratios of these. (Work on creating a test loop optimization for AREA is currently underway).

 

EDIT 4/10/23
Re-uploading gain pattern associated with most fit individual from this run

 

Attachment 1: 20230201_singleFreqTest_100NPop_fitnessPlot_10Gens.PNG
20230201_singleFreqTest_100NPop_fitnessPlot_10Gens.PNG
Attachment 2: 20230410_AREA_mostFitIndivReUpload_singleFreqTest.PNG
20230410_AREA_mostFitIndivReUpload_singleFreqTest.PNG
  200   Mon Mar 6 23:25:12 2023 Bryan ReynoldsRetroactive AREA update: December 26, 2022 AREA run- No linear freq. dependence test

The following is a run summary of the AREA test without the linear frequency dependence on the gain, with the frequency fixed (i.e. the same gain pattern is produced for all frequencies). This run was a preliminary test of the AREA algorithm after fixing long-standing errors in the algorithm and finding that the initial constaints implemented did not work with the frequency dependence on gain. Results from this run did show a "proof-of-concept" that the AREA algorithm seems to evolve single frequencies in a promising way, however a low number of individuals may have stalled the evolution.

Run details:

  • Run Type
    • AREA
  • Run Date
    • December 26, 2022
  • Run Name
    • 20221226breynoldsrun_noLinearDependAREATest_8RCO_8RM_2TCO_2TM_30000NNU_10Seeds
  • Why are we doing this run?
    • We tested the AREA algorithm set to evolve at a single frequency in order to see if it would evolve a gain pattern at that frequency within the required constraints.
  • What is different about this run from the last?
    • This run only evolves gain patterns at a single frequency, allowing us to investigate the evolved gain patterns and check that the required constraints on the power conservation are met, without yet fixing the constraints function to work with the linear frequency dependence relationship. This is also the longest test run since the AREA algorithm was fixed and gotten into working order.
  • Symmetric, asymmetric, linear, nonlinear (what order):
    • N/A
  • Number of individuals (NPOP):
    • 20
  • Number of neutrinos thrown in AraSim (NNT):
    • 300,000 Total (30,000 NNU x 10 Seeds)
  • Operatiors used (% of each):
    • 50% Cross-Over, 50% Mutation
  • Selection methods used (% of each):
    • 80% Roullette, 20% Tournament
  • Are we using the database?
    • N/A

Results:

  • Summary and comments on results
    • The evolution appeared to be successful in that the most fit gain pattern found (attached) seems to make sense with our understanding of the underlying physics. Additionally, after inspecting the outputs, conservation of power was confirmed to be properly constrained. However, in the attached violin plot, the fitness score plateaued quickly and never evolved further, with the best individual coming in generation 12. This was speculated to be due to the small population used in this test (only 20 total individuals per generation).
Attachment 1: 20230109_singleFreqTest_fitnessPlot_update30Gens.PNG
20230109_singleFreqTest_fitnessPlot_update30Gens.PNG
Attachment 2: 20221229_singleFreqTest_overallBestIndiv_gen12Indiv17.PNG
20221229_singleFreqTest_overallBestIndiv_gen12Indiv17.PNG
  Draft   Mon Mar 6 00:07:32 2023 Dylan WellsCurrent Status of PUEO and To Do List for Hackathon

I went through the current PUEO Loop  and documented everything that still needs to be accomplished before we can run.

Everything is compiled in this Google Doc which I will paste the current version of below.

 

Current Loop Overview:

 

Part A:

Runs GA, need to implement most recent GA (easy)

 

Part B:

B1:

Enters PUEO freq into simulation_PEC.xmacro then cats in PUEO simulationPECmacroskeletons.

Will  need to update simulationPECmacroskeletons with XF script to simulate the Hpol and Vpol sides of the antenna separately.

The bash portion should be working.

 

B2:

Currently almost the same as the ARA version. Creates the output.xmacro and moves the uan files. Will most likely need to change to get files in PUEO/icemc format, ready for input into the conversion script.

 

Part C:

Runs conversion script XFintoPUEO.py

The Bash portion is complete. We will need simple modifications to XFintoPUEO.py depending on XF outputs.

 

Part D:

D1:

Changes setup file, runs IceMCCall_Array.sh batch job

Need make this batch job to change IceMC / PUEO to read in the correct files 

(vv_0_{gen}_{i}, hh_0_{gen}_{i}) for the antenna i in generation gen.

I’ve commented where this should go. The rest of the job should be complete

The debug mode for D1 might not work, but it shouldn’t be necessary to run. 

So, the bash portion should be able to run.

 

D2:

Currently confirms runs by looking at the number of files in the AraSimConfirmed directory and looks for specific AraSim errors. 

This line will need to be changed to count the output files for icemc/pueo.

Change the error detection to just resubmit the job or something similar as we aren’t yet familiar with icemc errors during runtime. 

 

Part E:

Runs the PUEO fitness function. Unfortunately, icemc doesn’t output error bars, so we will have to remake any plots reliant on that. Veffective is also the same as fitness score.

Currently it should be working with the basic needed plots for gain patterns and veffective scores. But, we should add some more cool, automatic plots. 

 

Part F:

The plotting software seems to be specific to ARA output, needs PUEO versions.


 

ASYM LOOP:

Should be working with PUEO as a switch


 

IMPORTANT ISSUES:

 

Find out how to simulate polarization in XF:

Modify the current XF model, can be found in PAS1960/dylanwells1629/testproject.xf

The current model has all 4 sides of the antenna connected. However, the actual antenna is basically 2 antennas, one hpol and one vpol, electrically disconnected from each other. So, adjacent parts shouldn’t be electrically connected like they currently are in the model. We might have to simulate the two models independently. The goal for this portion is to figure out how to split up the antenna in the xmacro, and how to either simulate hpol and vpol separately or how to get xf to output hpol and vpol gain patterns.

XF Cross - Polarization, constraints --Alex

 

Make IceMC / PUEO read in out input gain patterns 

Will need to modify Batch_Jobs/IceMCCallArray.sh to change icemc to read in the current gain files before running. You can find the conversion script in Antenna_Performance_Metric/XFintoPUEO.py and the batch job will be run in Loop_Parts/Part_D 

We need to change icemc / pueo to read in the correct gain files before running it.

This will involve changing the anitaBuildTool/components/icemc/anita.cc ReadGains function starting on line 1413 to read in vv_0_{gen}_{num}, hh_0_{gen}_{num} , etc. (Do this with PueoSim) -- Dylan

I’m not sure if you will need to recompile these functions before running the icemc executable again, so find that out too. (enter pueoBuolder/ just run make) --Dylan

 

Make PUEO plotting software

All of the current plotting software is found within Part_E and Part_F. Sadly, icemc does not output errors for the veffectives (at least not that I could find, maybe you can find it), so much of the Ara plotting software will not work with PUEO outputs. The fitness scores csv will be the same format as ARA’s, and veffectives will be the same as fitness scores for PUEO. Figure out how to change the existing ARA python plotting scripts or make new ones.  --Bryan

 

Find out how to run PEUOsim and document outputs

Currently the loop is working with icemc, but we want to use PUEOsim for the future. So, document installing it, running it, and the outputs. (inputs are the same as icemc) -- Dylan 

  198   Fri Feb 24 10:05:38 2023 Alex MPaper Symmetric Run for Reviewer

We began a new run for a symmetric bicone antenna. The purpose of this is to satisfy the most recent comments from the reviewer on the paper. We are using the same GA as for the paper with the same parameters. I will update this post soon with more details about this run. There is a run_details file attached, but please wait for me to update this post with more specifics as the version of the GA being used is less connected to the details presented in that file.

The data can be found here: /fs/ess/PAS1960/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2023_02_20_Symmetric_Run .

Attachment 1: run_details_2023_02_20_Symmetric_Run.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2023_02_20_Symmetric_Run'      ## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100                   ## number of generations (after initial) to run through
NPOP=50                         ## number of individuals per generation; please keep this value below 99
Seeds=10                        ## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60                         ## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=30000                       ## Number of Neutrinos Thrown in AraSim
exp=18                          ## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0                 ## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1                     ## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4                      ## how many XF keys we are letting this run use
database_flag=0                 ## 0 if not using the database, 1 if using the database
                                ## These next 3 define the symmetry of the cones.
RADIUS=0                        ## If 1, radius is asymmetric. If 0, radius is symmetric
LENGTH=0                        ## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=0                         ## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=0                        ## If 1, evolve curved sides. If 0, sides are straight
A=0                             ## If 1, A is asymmetric
B=0                             ## If 1, B is asymmetric
SEPARATION=0                    ## If 1, separation evolves. If 0, separation is constant
NSECTIONS=1                     ## The number of chromosomes
DEBUG_MODE=0                    ## 1 for testing (ex: send specific seeds), 0 for real runs
                                ## These next variables are the values passed to the GA
REPRODUCTION=3                  ## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=36                    ## Number (not fraction!) of individuals formed through crossover
MUTATION=25                     ## Probability of mutation (divided by 100)
SIGMA=6                         ## Standard deviation for the mutation operation (divided by 100)
ROULETTE=8                      ## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=2                    ## Percent of individuals selected through tournament (divided by 10)
RANK=0                          ## Percent of individuals selected through rank (divided by 10)
ELITE=0                         ## Elite function on/off (1/0)

#####################################################################################################################################################
  197   Mon Feb 20 12:33:20 2023 Dennis H. CalderonAraSim Simulations for Top 5 Antennas (12/2022) with Higher Stats

AraSim Simulations for Top 5 Antennas from 12/2022 Run with 3 million simulated events

Simulated using Arasim version currently used in GENETIS Loop

/fs/ess/PAS1960/BiconeEvolutionOSC/AraSim/
 

AraSim ROOT files stored in

/fs/ess/PAS1960/ROOT_Files_Higher_Stats/AraSim_Loop_122022/Feb_2023_Crazy_Sides/

Antennas simulated

  • Generation: 13, Individual: 84
  • Generation: 18, Individual: 89
  • Generation: 19, Individual: 96
  • Generation: 29, Individual: 87
  • Generation: 9, Individual: 50

 

Results

Antenna Total Events Triggered Events Weighted Events Effective Volume Effective Volume Error
13_84 2995982 40251 16058 5.71 0.035
18_89 3010000 40224 15963 5.65 0.035
19_96 3010000 39989 16034 5.68 0.031
29_87 3010000 40056 16049 5.68 0.034
9_50 3010000 40042 16057 5.69 0.034
ARA_Sym_Bicone_6in 3010000 36627 14334 5.08 0.032

 

Conclusion

Antenna from Generation 13 Individual 84 performed the best with these stats

Attachment 1: Crazy_Sides_Triggered_Event_Data.pdf
  196   Sun Feb 19 17:12:34 2023 Jack TillmanPhysics Plots - 9_50, 13_84, 18_89, 19_96, 29_87

Attached is a pdf of physics plots generated for the 9_50, 13_84, 18_89, 19_96, and 29_87 crazy sides individuals along with another containing information on the amount of triggered events and effective volumes for each individual. The crazy sides individuals were simulated for 3 million events using the same Arasim version as is currently in the loop.

Attachment 1: Feb2023_Physics_Plots_Powerpoint.pdf
Attachment 2: Crazy_Sides_Triggered_Event_Data.pdf
  195   Wed Feb 15 16:33:17 2023 Jacob WeilerpueoSim Input Files

Input File Format for pueoSim (Also ICEMC)

Frequency Range: From 200 MHz to 1500 MHz incrementing by 10 MHz steps

 

There are 8 different files that are required for pueoSim. They are:

vv_0: Max Gain at each Frequency, Vertical Polarization

hh_0: Max Gain at each Frequency, Horizontal Polarization

vh_0: Max Gain at each Frequency, Vertical to Horizontal Polarization

hv_0: Max Gain at each Frequency, Horizontal to Vertical Polarization

vv_el: Gain at Theta Angles [5, 10, 20, 30, 45, 90] for each Frequency, Vertical Polarization

vv_az: Gain at Phi Angles [5, 10, 20, 30, 45, 90] for each Frequency, Vertical Polarization

hh_el: Gain at Theta Angles [5, 10, 20, 30, 45, 90] for each Frequency, Horizontal Polarization

hh_az: Gain at Phi Angles [5, 10, 20, 30, 45, 90] for each Frequency, Horizontal Polarization

Currently XF doesn't output all the information we need to create all these files. The only files able to be made from current XF outputs are vv_0, vv_el, and vv_az. Once we have the correct XF Outputs, it shouldn't be too much of a hassle to fix the current translation code.

 

Format for each of the files are the same. One column is Frequency (Hz) and the other is Gain. Attached are example files vv_0 and vv_el to visually see the format, though the frequency range is the current ARA range and not the final PUEO range as I am using ARA data to make these files. The files are named vv_0 (no .txt or .csv or any extension) and vv_el

 

Link to Google Doc with this information: https://docs.google.com/document/d/1iRUF6hIEyQfMK0LL21caRuHPgXYP30ZdkSkFv_-Y8R0/edit

Attachment 1: vv_0_1
8.33e+07 2.11822 
1.00e+08 0.9436538 
1.17e+08 1.205556 
1.33e+08 2.149637 
1.50e+08 2.729287 
1.67e+08 2.619639 
1.83e+08 2.532374 
2.00e+08 2.289813 
2.17e+08 2.406259 
2.33e+08 2.442176 
2.50e+08 2.628373 
2.67e+08 2.359219 
2.83e+08 1.761219 
3.00e+08 1.502431 
3.17e+08 2.106109 
3.33e+08 2.71283 
3.50e+08 3.247887 
3.67e+08 3.524175 
3.83e+08 3.615199 
4.00e+08 3.448137 
4.17e+08 3.003371 
4.33e+08 2.217343 
4.50e+08 0.9601937 
4.67e+08 -0.757537 
4.83e+08 -3.06678 
5.00e+08 -5.635237 
5.17e+08 -8.2271 
5.33e+08 -9.618924 
5.50e+08 -9.791239 
5.67e+08 -9.201792 
5.83e+08 -9.086395 
6.00e+08 -9.560636 
6.17e+08 -10.94548 
6.33e+08 -13.11583 
6.50e+08 -16.3255 
6.67e+08 -22.45401 
6.83e+08 -34.91041 
7.00e+08 -18.52293 
7.17e+08 -12.31584 
7.33e+08 -8.076791 
7.50e+08 -5.287256 
7.67e+08 -3.399354 
7.83e+08 -2.394224 
8.00e+08 -2.031315 
8.17e+08 -2.07204 
8.33e+08 -2.531995 
8.50e+08 -3.185455 
8.67e+08 -4.223504 
8.83e+08 -5.275337 
9.00e+08 -6.274862 
9.17e+08 -6.532893 
9.33e+08 -6.242696 
9.50e+08 -5.514515 
9.67e+08 -4.831669 
9.83e+08 -4.240883 
1.00e+09 -3.779134 
1.02e+09 -3.558248 
1.03e+09 -3.38254 
1.05e+09 -3.543484 
1.07e+09 -3.611961 
Attachment 2: vv_el_1
8.33e+07 -19.61153 
1.00e+08 -21.05896 
1.17e+08 -21.14054 
1.33e+08 -20.63561 
1.50e+08 -20.56293 
1.67e+08 -21.11712 
1.83e+08 -21.6924 
2.00e+08 -22.23107 
2.17e+08 -22.38623 
2.33e+08 -22.01034 
2.50e+08 -20.95566 
2.67e+08 -19.49215 
2.83e+08 -19.23056 
3.00e+08 -21.02166 
3.17e+08 -24.84512 
3.33e+08 -30.42641 
3.50e+08 -30.39998 
3.67e+08 -24.79053 
3.83e+08 -20.92692 
4.00e+08 -18.28975 
4.17e+08 -16.42205 
4.33e+08 -15.10437 
4.50e+08 -14.27861 
4.67e+08 -13.84517 
4.83e+08 -13.72481 
5.00e+08 -13.71555 
5.17e+08 -13.67698 
5.33e+08 -13.47088 
5.50e+08 -13.12691 
5.67e+08 -12.80078 
5.83e+08 -12.76288 
6.00e+08 -13.29937 
6.17e+08 -14.53883 
6.33e+08 -16.51551 
6.50e+08 -19.31712 
6.67e+08 -23.38054 
6.83e+08 -28.77149 
7.00e+08 -26.26056 
7.17e+08 -20.68733 
7.33e+08 -16.92428 
7.50e+08 -14.40974 
7.67e+08 -12.83548 
7.83e+08 -11.95044 
8.00e+08 -11.46287 
8.17e+08 -11.11874 
8.33e+08 -10.75576 
8.50e+08 -10.35075 
8.67e+08 -9.963577 
8.83e+08 -9.712427 
9.00e+08 -9.691508 
9.17e+08 -9.958833 
9.33e+08 -10.48243 
9.50e+08 -11.25391 
9.67e+08 -12.16331 
9.83e+08 -13.22009 
1.00e+09 -14.23114 
1.02e+09 -15.10789 
1.03e+09 -15.45052 
1.05e+09 -15.20106 
1.07e+09 -14.44125 
8.33e+07 -13.61057 
1.00e+08 -15.05177 
1.17e+08 -15.12521 
1.33e+08 -14.60951 
1.50e+08 -14.52322 
1.67e+08 -15.06334 
1.83e+08 -15.62302 
2.00e+08 -16.1491 
2.17e+08 -16.29245 
2.33e+08 -15.91477 
2.50e+08 -14.8618 
2.67e+08 -13.39692 
2.83e+08 -13.1095 
3.00e+08 -14.84329 
3.17e+08 -18.54948 
3.33e+08 -24.02788 
3.50e+08 -24.85216 
3.67e+08 -19.17134 
3.83e+08 -15.1775 
4.00e+08 -12.46181 
4.17e+08 -10.53846 
4.33e+08 -9.176889 
4.50e+08 -8.313917 
4.67e+08 -7.849362 
4.83e+08 -7.705056 
5.00e+08 -7.681289 
5.17e+08 -7.638247 
5.33e+08 -7.434054 
5.50e+08 -7.090922 
5.67e+08 -6.756147 
5.83e+08 -6.694556 
6.00e+08 -7.188318 
6.17e+08 -8.361327 
6.33e+08 -10.23697 
6.50e+08 -12.87492 
6.67e+08 -16.64803 
6.83e+08 -21.92072 
7.00e+08 -21.02616 
7.17e+08 -15.29548 
7.33e+08 -11.32251 
7.50e+08 -8.680712 
7.67e+08 -7.026238 
7.83e+08 -6.092156 
8.00e+08 -5.577537 
8.17e+08 -5.222755 
8.33e+08 -4.855792 
8.50e+08 -4.445815 
8.67e+08 -4.04485 
8.83e+08 -3.769133 
9.00e+08 -3.712655 
9.17e+08 -3.934655 
9.33e+08 -4.405427 
9.50e+08 -5.116381 
9.67e+08 -5.962245 
9.83e+08 -6.955142 
1.00e+09 -7.921253 
1.02e+09 -8.79726 
1.03e+09 -9.21963 
1.05e+09 -9.101768 
1.07e+09 -8.46457 
8.33e+07 -7.672357 
1.00e+08 -9.089356 
1.17e+08 -9.131313 
1.33e+08 -8.574198 
1.50e+08 -8.436004 
1.67e+08 -8.923278 
1.83e+08 -9.424584 
2.00e+08 -9.903976 
2.17e+08 -10.00275 
2.33e+08 -9.618365 
2.50e+08 -8.573076 
2.67e+08 -7.108304 
2.83e+08 -6.730207 
3.00e+08 -8.258189 
3.17e+08 -11.54483 
3.33e+08 -16.48101 
3.50e+08 -20.44362 
3.67e+08 -14.99668 
3.83e+08 -10.39325 
4.00e+08 -7.322492 
4.17e+08 -5.15867 
4.33e+08 -3.614434 
4.50e+08 -2.600771 
4.67e+08 -2.012469 
4.83e+08 -1.773685 
5.00e+08 -1.692136 
5.17e+08 -1.631185 
5.33e+08 -1.436829 
5.50e+08 -1.104481 
5.67e+08 -0.7477778 
5.83e+08 -0.6082266 
6.00e+08 -0.9526983 
6.17e+08 -1.891183 
6.33e+08 -3.416407 
6.50e+08 -5.508213 
6.67e+08 -8.350483 
6.83e+08 -12.36274 
7.00e+08 -15.94441 
7.17e+08 -11.94184 
7.33e+08 -7.215725 
7.50e+08 -4.031596 
7.67e+08 -2.033106 
7.83e+08 -0.8896422 
8.00e+08 -0.2599349 
8.17e+08 0.1364451 
8.33e+08 0.508579 
8.50e+08 0.9189453 
8.67e+08 1.351561 
8.83e+08 1.703014 
9.00e+08 1.881713 
9.17e+08 1.823472 
9.33e+08 1.546895 
9.50e+08 1.061567 
9.67e+08 0.4561304 
9.83e+08 -0.2820854 
1.00e+09 -1.030102 
1.02e+09 -1.782719 
1.03e+09 -2.307445 
1.05e+09 -2.516682 
1.07e+09 -2.306051 
8.33e+07 -4.297208 
1.00e+08 -5.677257 
1.17e+08 -5.671377 
1.33e+08 -5.051709 
1.50e+08 -4.836023 
1.67e+08 -5.245572 
1.83e+08 -5.661229 
2.00e+08 -6.072461 
2.17e+08 -6.104968 
2.33e+08 -5.710936 
2.50e+08 -4.682109 
2.67e+08 -3.235083 
2.83e+08 -2.745363 
3.00e+08 -3.999428 
3.17e+08 -6.728222 
3.33e+08 -10.71871 
3.50e+08 -16.85379 
3.67e+08 -15.67102 
3.83e+08 -9.610837 
4.00e+08 -5.713407 
4.17e+08 -3.051436 
4.33e+08 -1.161082 
4.50e+08 0.1202912 
4.67e+08 0.9189369 
4.83e+08 1.315152 
5.00e+08 1.493735 
5.17e+08 1.58528 
5.33e+08 1.756137 
5.50e+08 2.045786 
5.67e+08 2.395989 
5.83e+08 2.609925 
6.00e+08 2.448707 
6.17e+08 1.814713 
6.33e+08 0.7368893 
6.50e+08 -0.702895 
6.67e+08 -2.543868 
6.83e+08 -4.926394 
7.00e+08 -7.929486 
7.17e+08 -9.722289 
7.33e+08 -6.876765 
7.50e+08 -3.230588 
7.67e+08 -0.6956752 
7.83e+08 0.8078526 
8.00e+08 1.641694 
8.17e+08 2.100993 
8.33e+08 2.439688 
8.50e+08 2.768471 
8.67e+08 3.145787 
8.83e+08 3.516955 
9.00e+08 3.809434 
9.17e+08 3.95456 
9.33e+08 3.942741 
9.50e+08 3.779913 
9.67e+08 3.52297 
9.83e+08 3.16981 
1.00e+09 2.79626 
1.02e+09 2.387999 
1.03e+09 2.060452 
1.05e+09 1.836171 
1.07e+09 1.800864 
8.33e+07 -1.144795 
1.00e+08 -2.455938 
1.17e+08 -2.361629 
1.33e+08 -1.627502 
1.50e+08 -1.273074 
1.67e+08 -1.547562 
1.83e+08 -1.814825 
2.00e+08 -2.110694 
2.17e+08 -2.028768 
2.33e+08 -1.626653 
2.50e+08 -0.6542816 
2.67e+08 0.689521 
2.83e+08 1.297091 
3.00e+08 0.4526482 
3.17e+08 -1.408842 
3.33e+08 -3.855139 
3.50e+08 -7.45269 
3.67e+08 -13.8242 
3.83e+08 -21.86369 
4.00e+08 -10.18875 
4.17e+08 -4.926253 
4.33e+08 -1.717269 
4.50e+08 0.408406 
4.67e+08 1.793992 
4.83e+08 2.602153 
5.00e+08 3.033494 
5.17e+08 3.210672 
5.33e+08 3.304456 
5.50e+08 3.387133 
5.67e+08 3.514676 
5.83e+08 3.634609 
6.00e+08 3.636984 
6.17e+08 3.453297 
6.33e+08 3.09098 
6.50e+08 2.620621 
6.67e+08 2.051623 
6.83e+08 1.398647 
7.00e+08 0.6288801 
7.17e+08 -0.2089145 
7.33e+08 -0.8729058 
7.50e+08 -0.8983268 
7.67e+08 -0.1494044 
7.83e+08 0.8073187 
8.00e+08 1.548733 
8.17e+08 1.943862 
8.33e+08 2.050232 
8.50e+08 1.890077 
8.67e+08 1.512847 
8.83e+08 0.9992631 
9.00e+08 0.4794029 
9.17e+08 0.180576 
9.33e+08 0.1580454 
9.50e+08 0.4193046 
9.67e+08 0.7895336 
9.83e+08 1.223261 
1.00e+09 1.625476 
1.02e+09 2.006417 
1.03e+09 2.338812 
1.05e+09 2.613677 
1.07e+09 2.839776 
... 61 more lines ...
  194   Mon Feb 13 14:56:57 2023 Jack TillmanBuilding - Physics Plots for 9_50, 13_84, 18_89, 19_96, 29_87 Antennae

Physics plots were created for 300K events from the higher statistic simulation results for the 9_50, 13_84, 18_89, 19_96, and 29_87 antennae. 

The simulation was inaccurate because a discrepancy exists between the higher simulation physics plots and the physics plots created for the 300K event results currently in the GENETIS Loop. This can be seen in the attached pdf file. 

The simulation may have been inaccurate due to incorrect gain files. 

The higher statistic simulations must be rerun for the 9_50, 13_84, 18_89, 19_96, and 29_87 antennae.

 

Attachment 1: Genetis_Physics_Plot_Comparison_Slides.pdf
  193   Fri Feb 10 15:55:53 2023 Jack TillmanBuilding - Matching Circuit PCB

I've completed laying out the PCB for the 14-rung matching circuit. Attached are png files of two PCB designs. One uses LPS5050 inductors while the other uses LPS6235 inductors. The dimensions shown are in millimeters. 

Attachment 1: LPS5050_Dimensioned_PCB.png
LPS5050_Dimensioned_PCB.png
Attachment 2: LPS6235_Dimensioned_PCB.png
LPS6235_Dimensioned_PCB.png
  192   Mon Feb 6 13:20:26 2023 Dylan WellsPhysical Paramaters for the best antenna

Asym Straight Sides (from the paper - Generation 23, Individual 8)

(inner radius, length, opening angle in radians)

2.08711,89.924,0.0161734
0.30175,45.3616,0.0910478

individual found in 

/fs/project/PAS0654/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/AraSim_Polarity_Fix_2021_03_19/AraSim_Polarity_Fix_2021_03_19.xf/Simulations/001108/Run0001/

 

  191   Mon Feb 6 10:23:53 2023 Dylan WellsMatching Circuit Parts

Attached is a spreadsheet with the information on the parts we need for the N=14 matching circuit board.

https://docs.google.com/spreadsheets/d/1x8dX3tNE-WSHjH_slj_EH4XsHcAnCVC05XiRBFPtIUc/edit#gid=0

  190   Tue Jan 31 15:31:29 2023 Alex MARA Bicone Responses

Here we will record where we obtained the ARA bicone antenna response files we use as our baselines. We want to record where we found them/who gave them to us and how they were generated (either through simulation or from actual tests).

  189   Tue Jan 31 11:30:54 2023 Audrey ZinnBuilding

Attached are the XF files for the top 5 individuals from the 2022_12_29 crazy sides run. In order from best to 5th best: 

1: Gen 29 Indiv 87

2: Gen 19 Indiv 96

3: Gen 13 Indiv 84

4: Gen 9 Indiv 50

5: Gen 18 Indiv 89

These can also be found in /fs/ess/PAS1960/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2022_12_29/2022_12_29.xf in the corresponding directories. 

Attachment 1: XF_model_13_84.txt
freq : 83.33 MHz
SWR : 1.965000
 Theta     Phi     Gain(dB)     Gain     Phase(deg) 
0 	 0 	 -64.90     	   0.00     	    -105.60
5 	 0 	 -19.63     	   0.01     	    -105.58
10 	 0 	 -13.64     	   0.04     	    -105.51
15 	 0 	 -10.17     	   0.10     	    -105.38
20 	 0 	 -7.75     	   0.17     	    -105.21
25 	 0 	 -5.90     	   0.26     	    -104.96
30 	 0 	 -4.43     	   0.36     	    -104.65
35 	 0 	 -3.23     	   0.48     	    -104.25
40 	 0 	 -2.22     	   0.60     	    -103.75
45 	 0 	 -1.38     	   0.73     	    -103.11
50 	 0 	 -0.67     	   0.86     	    -102.31
55 	 0 	 -0.08     	   0.98     	    -101.26
60 	 0 	 0.42     	   1.10     	    -99.87
65 	 0 	 0.82     	   1.21     	    -97.94
70 	 0 	 1.14     	   1.30     	    -95.09
75 	 0 	 1.39     	   1.38     	    -90.53
80 	 0 	 1.56     	   1.43     	    -82.17
85 	 0 	 1.67     	   1.47     	    -63.52
90 	 0 	 1.70     	   1.48     	    -19.53
95 	 0 	 1.67     	   1.47     	    24.56
100 	 0 	 1.56     	   1.43     	    43.26
105 	 0 	 1.39     	   1.38     	    51.64
110 	 0 	 1.14     	   1.30     	    56.22
115 	 0 	 0.82     	   1.21     	    59.07
120 	 0 	 0.41     	   1.10     	    61.01
125 	 0 	 -0.08     	   0.98     	    62.41
130 	 0 	 -0.68     	   0.86     	    63.46
135 	 0 	 -1.39     	   0.73     	    64.28
140 	 0 	 -2.23     	   0.60     	    64.92
145 	 0 	 -3.23     	   0.48     	    65.43
150 	 0 	 -4.44     	   0.36     	    65.84
155 	 0 	 -5.91     	   0.26     	    66.17
160 	 0 	 -7.76     	   0.17     	    66.42
165 	 0 	 -10.19     	   0.10     	    66.62
170 	 0 	 -13.66     	   0.04     	    66.75
175 	 0 	 -19.66     	   0.01     	    66.84
180 	 0 	 -64.87     	   0.00     	    66.87
0 	 5 	 -64.33     	   0.00     	    -107.33
5 	 5 	 -19.63     	   0.01     	    -107.32
10 	 5 	 -13.64     	   0.04     	    -107.27
15 	 5 	 -10.17     	   0.10     	    -107.18
20 	 5 	 -7.75     	   0.17     	    -107.05
25 	 5 	 -5.90     	   0.26     	    -106.88
30 	 5 	 -4.43     	   0.36     	    -106.65
35 	 5 	 -3.23     	   0.48     	    -106.37
40 	 5 	 -2.22     	   0.60     	    -106.01
45 	 5 	 -1.38     	   0.73     	    -105.57
50 	 5 	 -0.67     	   0.86     	    -105.00
55 	 5 	 -0.08     	   0.98     	    -104.28
60 	 5 	 0.42     	   1.10     	    -103.31
65 	 5 	 0.82     	   1.21     	    -101.97
70 	 5 	 1.14     	   1.30     	    -99.99
75 	 5 	 1.39     	   1.38     	    -96.77
80 	 5 	 1.56     	   1.43     	    -90.60
85 	 5 	 1.67     	   1.47     	    -74.77
90 	 5 	 1.70     	   1.48     	    -18.14
95 	 5 	 1.67     	   1.47     	    36.69
100 	 5 	 1.56     	   1.43     	    51.96
105 	 5 	 1.39     	   1.38     	    57.99
110 	 5 	 1.14     	   1.30     	    61.17
115 	 5 	 0.82     	   1.21     	    63.13
120 	 5 	 0.41     	   1.10     	    64.46
125 	 5 	 -0.08     	   0.98     	    65.43
130 	 5 	 -0.68     	   0.86     	    66.16
135 	 5 	 -1.39     	   0.73     	    66.73
140 	 5 	 -2.23     	   0.60     	    67.19
145 	 5 	 -3.23     	   0.48     	    67.56
150 	 5 	 -4.44     	   0.36     	    67.85
155 	 5 	 -5.91     	   0.26     	    68.09
160 	 5 	 -7.76     	   0.17     	    68.27
165 	 5 	 -10.19     	   0.10     	    68.42
170 	 5 	 -13.66     	   0.04     	    68.52
175 	 5 	 -19.66     	   0.01     	    68.58
180 	 5 	 -64.30     	   0.00     	    68.61
0 	 10 	 -63.85     	   0.00     	    -109.51
5 	 10 	 -19.63     	   0.01     	    -109.51
10 	 10 	 -13.64     	   0.04     	    -109.49
15 	 10 	 -10.17     	   0.10     	    -109.45
20 	 10 	 -7.75     	   0.17     	    -109.38
25 	 10 	 -5.90     	   0.26     	    -109.30
30 	 10 	 -4.43     	   0.36     	    -109.19
35 	 10 	 -3.23     	   0.48     	    -109.06
40 	 10 	 -2.22     	   0.60     	    -108.89
45 	 10 	 -1.38     	   0.73     	    -108.69
50 	 10 	 -0.67     	   0.86     	    -108.44
55 	 10 	 -0.08     	   0.98     	    -108.13
60 	 10 	 0.42     	   1.10     	    -107.73
65 	 10 	 0.82     	   1.21     	    -107.19
70 	 10 	 1.14     	   1.30     	    -106.41
75 	 10 	 1.39     	   1.38     	    -105.17
80 	 10 	 1.56     	   1.43     	    -102.75
85 	 10 	 1.67     	   1.47     	    -95.68
90 	 10 	 1.70     	   1.48     	    -10.72
95 	 10 	 1.67     	   1.47     	    57.68
100 	 10 	 1.56     	   1.43     	    64.05
105 	 10 	 1.39     	   1.38     	    66.34
110 	 10 	 1.14     	   1.30     	    67.55
115 	 10 	 0.82     	   1.21     	    68.31
120 	 10 	 0.41     	   1.10     	    68.85
125 	 10 	 -0.08     	   0.98     	    69.26
130 	 10 	 -0.68     	   0.86     	    69.58
135 	 10 	 -1.39     	   0.73     	    69.84
140 	 10 	 -2.23     	   0.60     	    70.06
145 	 10 	 -3.23     	   0.48     	    70.24
150 	 10 	 -4.44     	   0.36     	    70.39
155 	 10 	 -5.91     	   0.26     	    70.51
160 	 10 	 -7.76     	   0.17     	    70.61
165 	 10 	 -10.19     	   0.10     	    70.69
170 	 10 	 -13.66     	   0.04     	    70.75
175 	 10 	 -19.66     	   0.01     	    70.78
180 	 10 	 -63.82     	   0.00     	    70.80
0 	 15 	 -63.45     	   0.00     	    -112.40
5 	 15 	 -19.63     	   0.01     	    -112.41
10 	 15 	 -13.64     	   0.04     	    -112.42
15 	 15 	 -10.17     	   0.10     	    -112.44
20 	 15 	 -7.75     	   0.17     	    -112.47
25 	 15 	 -5.90     	   0.26     	    -112.50
30 	 15 	 -4.43     	   0.36     	    -112.55
35 	 15 	 -3.23     	   0.48     	    -112.61
40 	 15 	 -2.22     	   0.60     	    -112.70
45 	 15 	 -1.38     	   0.73     	    -112.83
50 	 15 	 -0.67     	   0.86     	    -113.01
55 	 15 	 -0.08     	   0.98     	    -113.26
60 	 15 	 0.42     	   1.10     	    -113.63
65 	 15 	 0.82     	   1.21     	    -114.19
70 	 15 	 1.14     	   1.30     	    -115.09
75 	 15 	 1.39     	   1.38     	    -116.67
80 	 15 	 1.56     	   1.43     	    -119.98
85 	 15 	 1.67     	   1.47     	    -130.06
90 	 15 	 1.70     	   1.48     	    150.28
95 	 15 	 1.67     	   1.47     	    88.84
100 	 15 	 1.56     	   1.43     	    80.40
105 	 15 	 1.39     	   1.38     	    77.44
110 	 15 	 1.14     	   1.30     	    75.99
115 	 15 	 0.82     	   1.21     	    75.16
120 	 15 	 0.41     	   1.10     	    74.65
125 	 15 	 -0.08     	   0.98     	    74.32
130 	 15 	 -0.68     	   0.86     	    74.09
135 	 15 	 -1.39     	   0.73     	    73.95
140 	 15 	 -2.23     	   0.60     	    73.85
145 	 15 	 -3.23     	   0.48     	    73.78
150 	 15 	 -4.44     	   0.36     	    73.74
155 	 15 	 -5.91     	   0.26     	    73.71
160 	 15 	 -7.76     	   0.17     	    73.70
165 	 15 	 -10.19     	   0.10     	    73.69
170 	 15 	 -13.66     	   0.04     	    73.69
175 	 15 	 -19.66     	   0.01     	    73.70
180 	 15 	 -63.42     	   0.00     	    73.71
0 	 20 	 -63.14     	   0.00     	    -116.43
5 	 20 	 -19.63     	   0.01     	    -116.46
10 	 20 	 -13.64     	   0.04     	    -116.53
15 	 20 	 -10.17     	   0.10     	    -116.63
20 	 20 	 -7.75     	   0.17     	    -116.78
25 	 20 	 -5.90     	   0.26     	    -116.98
30 	 20 	 -4.43     	   0.36     	    -117.25
35 	 20 	 -3.23     	   0.48     	    -117.59
40 	 20 	 -2.22     	   0.60     	    -118.04
45 	 20 	 -1.38     	   0.73     	    -118.62
50 	 20 	 -0.67     	   0.86     	    -119.39
55 	 20 	 -0.08     	   0.98     	    -120.42
60 	 20 	 0.42     	   1.10     	    -121.84
65 	 20 	 0.82     	   1.21     	    -123.88
70 	 20 	 1.14     	   1.30     	    -126.97
75 	 20 	 1.39     	   1.38     	    -132.07
80 	 20 	 1.56     	   1.43     	    -141.54
85 	 20 	 1.67     	   1.47     	    -162.14
90 	 20 	 1.70     	   1.48     	    155.74
95 	 20 	 1.67     	   1.47     	    117.62
100 	 20 	 1.56     	   1.43     	    100.14
105 	 20 	 1.39     	   1.38     	    91.86
110 	 20 	 1.14     	   1.30     	    87.29
115 	 20 	 0.82     	   1.21     	    84.47
120 	 20 	 0.41     	   1.10     	    82.60
125 	 20 	 -0.08     	   0.98     	    81.29
130 	 20 	 -0.68     	   0.86     	    80.35
135 	 20 	 -1.39     	   0.73     	    79.64
140 	 20 	 -2.23     	   0.60     	    79.12
145 	 20 	 -3.23     	   0.48     	    78.72
150 	 20 	 -4.44     	   0.36     	    78.41
155 	 20 	 -5.91     	   0.26     	    78.18
160 	 20 	 -7.76     	   0.17     	    78.02
165 	 20 	 -10.19     	   0.10     	    77.90
170 	 20 	 -13.66     	   0.04     	    77.82
175 	 20 	 -19.66     	   0.01     	    77.78
180 	 20 	 -63.11     	   0.00     	    77.78
0 	 25 	 -62.89     	   0.00     	    -122.51
5 	 25 	 -19.63     	   0.01     	    -122.57
10 	 25 	 -13.64     	   0.04     	    -122.71
15 	 25 	 -10.17     	   0.10     	    -122.95
20 	 25 	 -7.75     	   0.17     	    -123.28
25 	 25 	 -5.90     	   0.26     	    -123.72
30 	 25 	 -4.43     	   0.36     	    -124.31
35 	 25 	 -3.23     	   0.48     	    -125.05
40 	 25 	 -2.22     	   0.60     	    -126.00
45 	 25 	 -1.38     	   0.73     	    -127.22
50 	 25 	 -0.67     	   0.86     	    -128.80
55 	 25 	 -0.08     	   0.98     	    -130.86
60 	 25 	 0.42     	   1.10     	    -133.62
65 	 25 	 0.82     	   1.21     	    -137.41
70 	 25 	 1.14     	   1.30     	    -142.79
75 	 25 	 1.39     	   1.38     	    -150.72
80 	 25 	 1.56     	   1.43     	    -162.72
85 	 25 	 1.67     	   1.47     	    179.55
90 	 25 	 1.70     	   1.48     	    157.02
95 	 25 	 1.67     	   1.47     	    135.52
100 	 25 	 1.56     	   1.43     	    119.63
105 	 25 	 1.39     	   1.38     	    109.06
110 	 25 	 1.14     	   1.30     	    102.05
115 	 25 	 0.82     	   1.21     	    97.25
120 	 25 	 0.41     	   1.10     	    93.83
125 	 25 	 -0.08     	   0.98     	    91.34
130 	 25 	 -0.68     	   0.86     	    89.46
135 	 25 	 -1.39     	   0.73     	    88.03
140 	 25 	 -2.23     	   0.60     	    86.93
145 	 25 	 -3.23     	   0.48     	    86.07
150 	 25 	 -4.44     	   0.36     	    85.40
155 	 25 	 -5.91     	   0.26     	    84.89
160 	 25 	 -7.76     	   0.17     	    84.50
165 	 25 	 -10.19     	   0.10     	    84.22
170 	 25 	 -13.66     	   0.04     	    84.04
175 	 25 	 -19.66     	   0.01     	    83.94
180 	 25 	 -62.87     	   0.00     	    83.92
0 	 30 	 -62.72     	   0.00     	    -132.56
5 	 30 	 -19.63     	   0.01     	    -132.68
10 	 30 	 -13.64     	   0.04     	    -132.94
15 	 30 	 -10.17     	   0.10     	    -133.37
20 	 30 	 -7.75     	   0.17     	    -133.97
25 	 30 	 -5.90     	   0.26     	    -134.77
30 	 30 	 -4.43     	   0.36     	    -135.79
35 	 30 	 -3.23     	   0.48     	    -137.09
40 	 30 	 -2.22     	   0.60     	    -138.71
45 	 30 	 -1.38     	   0.73     	    -140.72
50 	 30 	 -0.67     	   0.86     	    -143.24
55 	 30 	 -0.08     	   0.98     	    -146.39
60 	 30 	 0.42     	   1.10     	    -150.34
65 	 30 	 0.82     	   1.21     	    -155.35
70 	 30 	 1.14     	   1.30     	    -161.66
75 	 30 	 1.39     	   1.38     	    -169.57
80 	 30 	 1.56     	   1.43     	    -179.20
85 	 30 	 1.67     	   1.47     	    169.63
90 	 30 	 1.70     	   1.48     	    157.66
95 	 30 	 1.67     	   1.47     	    145.96
100 	 30 	 1.56     	   1.43     	    135.50
105 	 30 	 1.39     	   1.38     	    126.73
110 	 30 	 1.14     	   1.30     	    119.66
115 	 30 	 0.82     	   1.21     	    114.04
120 	 30 	 0.41     	   1.10     	    109.61
125 	 30 	 -0.08     	   0.98     	    106.09
130 	 30 	 -0.68     	   0.86     	    103.30
135 	 30 	 -1.39     	   0.73     	    101.07
140 	 30 	 -2.23     	   0.60     	    99.29
145 	 30 	 -3.23     	   0.48     	    97.86
150 	 30 	 -4.44     	   0.36     	    96.72
155 	 30 	 -5.91     	   0.26     	    95.83
160 	 30 	 -7.76     	   0.17     	    95.15
165 	 30 	 -10.19     	   0.10     	    94.66
170 	 30 	 -13.66     	   0.04     	    94.33
175 	 30 	 -19.66     	   0.01     	    94.15
180 	 30 	 -62.70     	   0.00     	    94.13
0 	 35 	 -62.62     	   0.00     	    -150.86
5 	 35 	 -19.63     	   0.01     	    -151.07
10 	 35 	 -13.64     	   0.04     	    -151.49
15 	 35 	 -10.17     	   0.10     	    -152.14
20 	 35 	 -7.75     	   0.17     	    -153.03
25 	 35 	 -5.90     	   0.26     	    -154.18
30 	 35 	 -4.43     	   0.36     	    -155.60
35 	 35 	 -3.23     	   0.48     	    -157.32
40 	 35 	 -2.22     	   0.60     	    -159.38
45 	 35 	 -1.38     	   0.73     	    -161.80
50 	 35 	 -0.67     	   0.86     	    -164.62
55 	 35 	 -0.08     	   0.98     	    -167.87
60 	 35 	 0.42     	   1.10     	    -171.57
65 	 35 	 0.82     	   1.21     	    -175.73
70 	 35 	 1.14     	   1.30     	    179.66
75 	 35 	 1.39     	   1.38     	    174.64
80 	 35 	 1.56     	   1.43     	    169.28
85 	 35 	 1.67     	   1.47     	    163.72
90 	 35 	 1.70     	   1.48     	    158.08
95 	 35 	 1.67     	   1.47     	    152.52
100 	 35 	 1.56     	   1.43     	    147.18
105 	 35 	 1.39     	   1.38     	    142.18
110 	 35 	 1.14     	   1.30     	    137.59
115 	 35 	 0.82     	   1.21     	    133.45
120 	 35 	 0.41     	   1.10     	    129.78
125 	 35 	 -0.08     	   0.98     	    126.55
130 	 35 	 -0.68     	   0.86     	    123.75
135 	 35 	 -1.39     	   0.73     	    121.34
140 	 35 	 -2.23     	   0.60     	    119.29
145 	 35 	 -3.23     	   0.48     	    117.57
150 	 35 	 -4.44     	   0.36     	    116.14
155 	 35 	 -5.91     	   0.26     	    114.99
160 	 35 	 -7.76     	   0.17     	    114.09
165 	 35 	 -10.19     	   0.10     	    113.43
170 	 35 	 -13.66     	   0.04     	    113.00
175 	 35 	 -19.66     	   0.01     	    112.78
180 	 35 	 -62.60     	   0.00     	    112.77
0 	 40 	 -62.58     	   0.00     	    177.48
... 159721 more lines ...
Attachment 2: XF_model_9_50.txt
freq : 83.33 MHz
SWR : 1.965000
 Theta     Phi     Gain(dB)     Gain     Phase(deg) 
0 	 0 	 -65.66     	   0.00     	    68.97
5 	 0 	 -23.00     	   0.01     	    68.99
10 	 0 	 -17.02     	   0.02     	    69.05
15 	 0 	 -13.55     	   0.04     	    69.15
20 	 0 	 -11.13     	   0.08     	    69.30
25 	 0 	 -9.29     	   0.12     	    69.49
30 	 0 	 -7.82     	   0.17     	    69.75
35 	 0 	 -6.63     	   0.22     	    70.06
40 	 0 	 -5.63     	   0.27     	    70.43
45 	 0 	 -4.79     	   0.33     	    70.90
50 	 0 	 -4.09     	   0.39     	    71.47
55 	 0 	 -3.50     	   0.45     	    72.18
60 	 0 	 -3.01     	   0.50     	    73.09
65 	 0 	 -2.61     	   0.55     	    74.31
70 	 0 	 -2.29     	   0.59     	    76.06
75 	 0 	 -2.05     	   0.62     	    78.83
80 	 0 	 -1.88     	   0.65     	    84.06
85 	 0 	 -1.78     	   0.66     	    97.84
90 	 0 	 -1.74     	   0.67     	    159.48
95 	 0 	 -1.78     	   0.66     	    -139.66
100 	 0 	 -1.88     	   0.65     	    -126.04
105 	 0 	 -2.05     	   0.62     	    -120.85
110 	 0 	 -2.30     	   0.59     	    -118.08
115 	 0 	 -2.61     	   0.55     	    -116.34
120 	 0 	 -3.02     	   0.50     	    -115.12
125 	 0 	 -3.51     	   0.45     	    -114.20
130 	 0 	 -4.10     	   0.39     	    -113.48
135 	 0 	 -4.80     	   0.33     	    -112.91
140 	 0 	 -5.63     	   0.27     	    -112.44
145 	 0 	 -6.63     	   0.22     	    -112.05
150 	 0 	 -7.83     	   0.16     	    -111.73
155 	 0 	 -9.30     	   0.12     	    -111.47
160 	 0 	 -11.14     	   0.08     	    -111.26
165 	 0 	 -13.57     	   0.04     	    -111.10
170 	 0 	 -17.04     	   0.02     	    -110.98
175 	 0 	 -23.04     	   0.00     	    -110.91
180 	 0 	 -65.62     	   0.00     	    -110.88
0 	 5 	 -66.34     	   0.00     	    70.70
5 	 5 	 -23.00     	   0.01     	    70.72
10 	 5 	 -17.02     	   0.02     	    70.80
15 	 5 	 -13.55     	   0.04     	    70.93
20 	 5 	 -11.13     	   0.08     	    71.12
25 	 5 	 -9.29     	   0.12     	    71.39
30 	 5 	 -7.82     	   0.17     	    71.72
35 	 5 	 -6.63     	   0.22     	    72.14
40 	 5 	 -5.63     	   0.27     	    72.65
45 	 5 	 -4.79     	   0.33     	    73.29
50 	 5 	 -4.09     	   0.39     	    74.09
55 	 5 	 -3.50     	   0.45     	    75.11
60 	 5 	 -3.01     	   0.50     	    76.44
65 	 5 	 -2.61     	   0.55     	    78.24
70 	 5 	 -2.29     	   0.59     	    80.87
75 	 5 	 -2.05     	   0.62     	    85.05
80 	 5 	 -1.88     	   0.65     	    92.78
85 	 5 	 -1.78     	   0.66     	    110.94
90 	 5 	 -1.74     	   0.67     	    160.03
95 	 5 	 -1.78     	   0.66     	    -152.08
100 	 5 	 -1.88     	   0.65     	    -134.51
105 	 5 	 -2.05     	   0.62     	    -126.96
110 	 5 	 -2.30     	   0.59     	    -122.85
115 	 5 	 -2.61     	   0.55     	    -120.26
120 	 5 	 -3.02     	   0.50     	    -118.46
125 	 5 	 -3.51     	   0.45     	    -117.14
130 	 5 	 -4.10     	   0.39     	    -116.13
135 	 5 	 -4.80     	   0.33     	    -115.32
140 	 5 	 -5.63     	   0.27     	    -114.67
145 	 5 	 -6.63     	   0.22     	    -114.15
150 	 5 	 -7.83     	   0.16     	    -113.72
155 	 5 	 -9.30     	   0.12     	    -113.38
160 	 5 	 -11.14     	   0.08     	    -113.10
165 	 5 	 -13.57     	   0.04     	    -112.89
170 	 5 	 -17.04     	   0.02     	    -112.75
175 	 5 	 -23.04     	   0.00     	    -112.66
180 	 5 	 -66.29     	   0.00     	    -112.62
0 	 10 	 -67.14     	   0.00     	    72.17
5 	 10 	 -23.00     	   0.01     	    72.19
10 	 10 	 -17.02     	   0.02     	    72.28
15 	 10 	 -13.55     	   0.04     	    72.45
20 	 10 	 -11.13     	   0.08     	    72.68
25 	 10 	 -9.29     	   0.12     	    72.99
30 	 10 	 -7.82     	   0.17     	    73.40
35 	 10 	 -6.63     	   0.22     	    73.91
40 	 10 	 -5.63     	   0.27     	    74.54
45 	 10 	 -4.79     	   0.33     	    75.33
50 	 10 	 -4.09     	   0.39     	    76.32
55 	 10 	 -3.50     	   0.45     	    77.59
60 	 10 	 -3.01     	   0.50     	    79.26
65 	 10 	 -2.61     	   0.55     	    81.54
70 	 10 	 -2.29     	   0.59     	    84.86
75 	 10 	 -2.05     	   0.62     	    90.10
80 	 10 	 -1.88     	   0.65     	    99.46
85 	 10 	 -1.78     	   0.66     	    119.21
90 	 10 	 -1.74     	   0.67     	    160.25
95 	 10 	 -1.78     	   0.66     	    -159.82
100 	 10 	 -1.88     	   0.65     	    -140.91
105 	 10 	 -2.05     	   0.62     	    -131.87
110 	 10 	 -2.30     	   0.59     	    -126.77
115 	 10 	 -2.61     	   0.55     	    -123.52
120 	 10 	 -3.02     	   0.50     	    -121.27
125 	 10 	 -3.51     	   0.45     	    -119.61
130 	 10 	 -4.10     	   0.39     	    -118.35
135 	 10 	 -4.80     	   0.33     	    -117.36
140 	 10 	 -5.63     	   0.27     	    -116.57
145 	 10 	 -6.63     	   0.22     	    -115.93
150 	 10 	 -7.83     	   0.16     	    -115.41
155 	 10 	 -9.30     	   0.12     	    -114.99
160 	 10 	 -11.14     	   0.08     	    -114.67
165 	 10 	 -13.57     	   0.04     	    -114.42
170 	 10 	 -17.04     	   0.02     	    -114.25
175 	 10 	 -23.04     	   0.00     	    -114.14
180 	 10 	 -67.09     	   0.00     	    -114.10
0 	 15 	 -68.08     	   0.00     	    73.45
5 	 15 	 -23.00     	   0.01     	    73.48
10 	 15 	 -17.02     	   0.02     	    73.58
15 	 15 	 -13.55     	   0.04     	    73.77
20 	 15 	 -11.13     	   0.08     	    74.04
25 	 15 	 -9.29     	   0.12     	    74.40
30 	 15 	 -7.82     	   0.17     	    74.86
35 	 15 	 -6.63     	   0.22     	    75.45
40 	 15 	 -5.63     	   0.27     	    76.18
45 	 15 	 -4.79     	   0.33     	    77.10
50 	 15 	 -4.09     	   0.39     	    78.26
55 	 15 	 -3.50     	   0.45     	    79.74
60 	 15 	 -3.01     	   0.50     	    81.70
65 	 15 	 -2.61     	   0.55     	    84.37
70 	 15 	 -2.29     	   0.59     	    88.24
75 	 15 	 -2.05     	   0.62     	    94.27
80 	 15 	 -1.88     	   0.65     	    104.69
85 	 15 	 -1.78     	   0.66     	    124.77
90 	 15 	 -1.74     	   0.67     	    160.35
95 	 15 	 -1.78     	   0.66     	    -165.00
100 	 15 	 -1.88     	   0.65     	    -145.87
105 	 15 	 -2.05     	   0.62     	    -135.89
110 	 15 	 -2.30     	   0.59     	    -130.06
115 	 15 	 -2.61     	   0.55     	    -126.29
120 	 15 	 -3.02     	   0.50     	    -123.67
125 	 15 	 -3.51     	   0.45     	    -121.74
130 	 15 	 -4.10     	   0.39     	    -120.28
135 	 15 	 -4.80     	   0.33     	    -119.13
140 	 15 	 -5.63     	   0.27     	    -118.21
145 	 15 	 -6.63     	   0.22     	    -117.47
150 	 15 	 -7.83     	   0.16     	    -116.88
155 	 15 	 -9.30     	   0.12     	    -116.40
160 	 15 	 -11.14     	   0.08     	    -116.03
165 	 15 	 -13.57     	   0.04     	    -115.75
170 	 15 	 -17.04     	   0.02     	    -115.55
175 	 15 	 -23.04     	   0.00     	    -115.43
180 	 15 	 -68.02     	   0.00     	    -115.39
0 	 20 	 -69.19     	   0.00     	    74.59
5 	 20 	 -23.00     	   0.01     	    74.62
10 	 20 	 -17.02     	   0.02     	    74.74
15 	 20 	 -13.55     	   0.04     	    74.95
20 	 20 	 -11.13     	   0.08     	    75.25
25 	 20 	 -9.29     	   0.12     	    75.65
30 	 20 	 -7.82     	   0.17     	    76.17
35 	 20 	 -6.63     	   0.22     	    76.82
40 	 20 	 -5.63     	   0.27     	    77.64
45 	 20 	 -4.79     	   0.33     	    78.67
50 	 20 	 -4.09     	   0.39     	    79.97
55 	 20 	 -3.50     	   0.45     	    81.64
60 	 20 	 -3.01     	   0.50     	    83.84
65 	 20 	 -2.61     	   0.55     	    86.85
70 	 20 	 -2.29     	   0.59     	    91.16
75 	 20 	 -2.05     	   0.62     	    97.79
80 	 20 	 -1.88     	   0.65     	    108.88
85 	 20 	 -1.78     	   0.66     	    128.73
90 	 20 	 -1.74     	   0.67     	    160.41
95 	 20 	 -1.78     	   0.66     	    -168.71
100 	 20 	 -1.88     	   0.65     	    -149.83
105 	 20 	 -2.05     	   0.62     	    -139.26
110 	 20 	 -2.30     	   0.59     	    -132.89
115 	 20 	 -2.61     	   0.55     	    -128.71
120 	 20 	 -3.02     	   0.50     	    -125.78
125 	 20 	 -3.51     	   0.45     	    -123.62
130 	 20 	 -4.10     	   0.39     	    -121.98
135 	 20 	 -4.80     	   0.33     	    -120.69
140 	 20 	 -5.63     	   0.27     	    -119.66
145 	 20 	 -6.63     	   0.22     	    -118.84
150 	 20 	 -7.83     	   0.16     	    -118.18
155 	 20 	 -9.30     	   0.12     	    -117.66
160 	 20 	 -11.14     	   0.08     	    -117.24
165 	 20 	 -13.57     	   0.04     	    -116.93
170 	 20 	 -17.04     	   0.02     	    -116.72
175 	 20 	 -23.04     	   0.00     	    -116.58
180 	 20 	 -69.13     	   0.00     	    -116.53
0 	 25 	 -70.51     	   0.00     	    75.63
5 	 25 	 -23.00     	   0.01     	    75.67
10 	 25 	 -17.02     	   0.02     	    75.80
15 	 25 	 -13.56     	   0.04     	    76.02
20 	 25 	 -11.13     	   0.08     	    76.35
25 	 25 	 -9.29     	   0.12     	    76.79
30 	 25 	 -7.82     	   0.17     	    77.35
35 	 25 	 -6.63     	   0.22     	    78.07
40 	 25 	 -5.63     	   0.27     	    78.97
45 	 25 	 -4.79     	   0.33     	    80.10
50 	 25 	 -4.09     	   0.39     	    81.52
55 	 25 	 -3.50     	   0.45     	    83.36
60 	 25 	 -3.01     	   0.50     	    85.77
65 	 25 	 -2.61     	   0.55     	    89.05
70 	 25 	 -2.29     	   0.59     	    93.74
75 	 25 	 -2.05     	   0.62     	    100.82
80 	 25 	 -1.88     	   0.65     	    112.32
85 	 25 	 -1.78     	   0.66     	    131.71
90 	 25 	 -1.74     	   0.67     	    160.43
95 	 25 	 -1.78     	   0.66     	    -171.53
100 	 25 	 -1.88     	   0.65     	    -153.09
105 	 25 	 -2.05     	   0.62     	    -142.16
110 	 25 	 -2.30     	   0.59     	    -135.37
115 	 25 	 -2.61     	   0.55     	    -130.85
120 	 25 	 -3.02     	   0.50     	    -127.66
125 	 25 	 -3.51     	   0.45     	    -125.31
130 	 25 	 -4.10     	   0.39     	    -123.51
135 	 25 	 -4.80     	   0.33     	    -122.10
140 	 25 	 -5.63     	   0.27     	    -120.98
145 	 25 	 -6.63     	   0.22     	    -120.09
150 	 25 	 -7.83     	   0.16     	    -119.37
155 	 25 	 -9.30     	   0.12     	    -118.79
160 	 25 	 -11.14     	   0.08     	    -118.35
165 	 25 	 -13.57     	   0.04     	    -118.01
170 	 25 	 -17.04     	   0.02     	    -117.77
175 	 25 	 -23.04     	   0.00     	    -117.63
180 	 25 	 -70.44     	   0.00     	    -117.58
0 	 30 	 -72.08     	   0.00     	    76.59
5 	 30 	 -23.00     	   0.01     	    76.63
10 	 30 	 -17.02     	   0.02     	    76.77
15 	 30 	 -13.56     	   0.04     	    77.02
20 	 30 	 -11.13     	   0.08     	    77.37
25 	 30 	 -9.29     	   0.12     	    77.84
30 	 30 	 -7.82     	   0.17     	    78.45
35 	 30 	 -6.63     	   0.22     	    79.23
40 	 30 	 -5.63     	   0.27     	    80.20
45 	 30 	 -4.79     	   0.33     	    81.41
50 	 30 	 -4.09     	   0.39     	    82.96
55 	 30 	 -3.50     	   0.45     	    84.93
60 	 30 	 -3.01     	   0.50     	    87.53
65 	 30 	 -2.61     	   0.55     	    91.06
70 	 30 	 -2.29     	   0.59     	    96.04
75 	 30 	 -2.05     	   0.62     	    103.48
80 	 30 	 -1.88     	   0.65     	    115.21
85 	 30 	 -1.78     	   0.66     	    134.04
90 	 30 	 -1.74     	   0.67     	    160.43
95 	 30 	 -1.78     	   0.66     	    -173.76
100 	 30 	 -1.88     	   0.65     	    -155.84
105 	 30 	 -2.05     	   0.62     	    -144.70
110 	 30 	 -2.30     	   0.59     	    -137.59
115 	 30 	 -2.61     	   0.55     	    -132.79
120 	 30 	 -3.02     	   0.50     	    -129.38
125 	 30 	 -3.51     	   0.45     	    -126.85
130 	 30 	 -4.10     	   0.39     	    -124.91
135 	 30 	 -4.80     	   0.33     	    -123.40
140 	 30 	 -5.63     	   0.27     	    -122.20
145 	 30 	 -6.63     	   0.22     	    -121.23
150 	 30 	 -7.83     	   0.16     	    -120.46
155 	 30 	 -9.30     	   0.12     	    -119.84
160 	 30 	 -11.14     	   0.08     	    -119.36
165 	 30 	 -13.57     	   0.04     	    -119.00
170 	 30 	 -17.04     	   0.02     	    -118.75
175 	 30 	 -23.04     	   0.00     	    -118.60
180 	 30 	 -72.01     	   0.00     	    -118.54
0 	 35 	 -73.95     	   0.00     	    77.50
5 	 35 	 -23.00     	   0.01     	    77.55
10 	 35 	 -17.02     	   0.02     	    77.70
15 	 35 	 -13.56     	   0.04     	    77.95
20 	 35 	 -11.13     	   0.08     	    78.33
25 	 35 	 -9.29     	   0.12     	    78.83
30 	 35 	 -7.82     	   0.17     	    79.49
35 	 35 	 -6.63     	   0.22     	    80.31
40 	 35 	 -5.63     	   0.27     	    81.35
45 	 35 	 -4.79     	   0.33     	    82.65
50 	 35 	 -4.09     	   0.39     	    84.29
55 	 35 	 -3.50     	   0.45     	    86.40
60 	 35 	 -3.01     	   0.50     	    89.17
65 	 35 	 -2.61     	   0.55     	    92.90
70 	 35 	 -2.29     	   0.59     	    98.15
75 	 35 	 -2.05     	   0.62     	    105.86
80 	 35 	 -1.88     	   0.65     	    117.70
85 	 35 	 -1.78     	   0.66     	    135.93
90 	 35 	 -1.74     	   0.67     	    160.42
95 	 35 	 -1.78     	   0.66     	    -175.60
100 	 35 	 -1.88     	   0.65     	    -158.22
105 	 35 	 -2.05     	   0.62     	    -146.97
110 	 35 	 -2.30     	   0.59     	    -139.62
115 	 35 	 -2.61     	   0.55     	    -134.58
120 	 35 	 -3.02     	   0.50     	    -130.97
125 	 35 	 -3.51     	   0.45     	    -128.29
130 	 35 	 -4.10     	   0.39     	    -126.23
135 	 35 	 -4.80     	   0.33     	    -124.62
140 	 35 	 -5.63     	   0.27     	    -123.33
145 	 35 	 -6.63     	   0.22     	    -122.31
150 	 35 	 -7.83     	   0.16     	    -121.49
155 	 35 	 -9.30     	   0.12     	    -120.83
160 	 35 	 -11.14     	   0.08     	    -120.32
165 	 35 	 -13.57     	   0.04     	    -119.94
170 	 35 	 -17.04     	   0.02     	    -119.67
175 	 35 	 -23.04     	   0.00     	    -119.51
180 	 35 	 -73.87     	   0.00     	    -119.46
0 	 40 	 -76.10     	   0.00     	    78.37
... 159721 more lines ...
Attachment 3: XF_model_18_89.txt
freq : 83.33 MHz
SWR : 1.965000
 Theta     Phi     Gain(dB)     Gain     Phase(deg) 
0 	 0 	 -300.00     	   0.00     	    -25.63
5 	 0 	 -300.00     	   0.00     	    -25.69
10 	 0 	 -300.00     	   0.00     	    -25.72
15 	 0 	 -300.00     	   0.00     	    -25.73
20 	 0 	 -300.00     	   0.00     	    -25.71
25 	 0 	 -300.00     	   0.00     	    -25.66
30 	 0 	 -300.00     	   0.00     	    -25.58
35 	 0 	 -300.00     	   0.00     	    -25.48
40 	 0 	 -300.00     	   0.00     	    -25.35
45 	 0 	 -300.00     	   0.00     	    -25.20
50 	 0 	 -300.00     	   0.00     	    -25.02
55 	 0 	 -300.00     	   0.00     	    -24.82
60 	 0 	 -300.00     	   0.00     	    -24.59
65 	 0 	 -300.00     	   0.00     	    -24.33
70 	 0 	 -300.00     	   0.00     	    -24.06
75 	 0 	 -300.00     	   0.00     	    -23.76
80 	 0 	 -300.00     	   0.00     	    -23.44
85 	 0 	 -300.00     	   0.00     	    -23.11
90 	 0 	 -300.00     	   0.00     	    -22.76
95 	 0 	 -300.00     	   0.00     	    -22.39
100 	 0 	 -300.00     	   0.00     	    -22.02
105 	 0 	 -300.00     	   0.00     	    -21.63
110 	 0 	 -300.00     	   0.00     	    -21.24
115 	 0 	 -300.00     	   0.00     	    -20.85
120 	 0 	 -300.00     	   0.00     	    -20.46
125 	 0 	 -300.00     	   0.00     	    -20.07
130 	 0 	 -300.00     	   0.00     	    -19.70
135 	 0 	 -300.00     	   0.00     	    -19.34
140 	 0 	 -300.00     	   0.00     	    -18.99
145 	 0 	 -300.00     	   0.00     	    -18.67
150 	 0 	 -300.00     	   0.00     	    -18.37
155 	 0 	 -300.00     	   0.00     	    -18.09
160 	 0 	 -300.00     	   0.00     	    -17.85
165 	 0 	 -300.00     	   0.00     	    -17.64
170 	 0 	 -300.00     	   0.00     	    -17.47
175 	 0 	 -300.00     	   0.00     	    -17.33
180 	 0 	 -300.00     	   0.00     	    -17.23
0 	 5 	 -300.00     	   0.00     	    -57.01
5 	 5 	 -300.00     	   0.00     	    -56.84
10 	 5 	 -300.00     	   0.00     	    -56.42
15 	 5 	 -300.00     	   0.00     	    -55.73
20 	 5 	 -300.00     	   0.00     	    -54.77
25 	 5 	 -300.00     	   0.00     	    -53.53
30 	 5 	 -300.00     	   0.00     	    -52.01
35 	 5 	 -300.00     	   0.00     	    -50.20
40 	 5 	 -300.00     	   0.00     	    -48.07
45 	 5 	 -300.00     	   0.00     	    -45.62
50 	 5 	 -300.00     	   0.00     	    -42.84
55 	 5 	 -300.00     	   0.00     	    -39.72
60 	 5 	 -300.00     	   0.00     	    -36.29
65 	 5 	 -300.00     	   0.00     	    -32.55
70 	 5 	 -300.00     	   0.00     	    -28.55
75 	 5 	 -300.00     	   0.00     	    -24.35
80 	 5 	 -300.00     	   0.00     	    -20.01
85 	 5 	 -300.00     	   0.00     	    -15.63
90 	 5 	 -300.00     	   0.00     	    -11.28
95 	 5 	 -300.00     	   0.00     	    -7.06
100 	 5 	 -300.00     	   0.00     	    -3.05
105 	 5 	 -300.00     	   0.00     	    0.71
110 	 5 	 -300.00     	   0.00     	    4.17
115 	 5 	 -300.00     	   0.00     	    7.31
120 	 5 	 -300.00     	   0.00     	    10.11
125 	 5 	 -300.00     	   0.00     	    12.60
130 	 5 	 -300.00     	   0.00     	    14.77
135 	 5 	 -300.00     	   0.00     	    16.65
140 	 5 	 -300.00     	   0.00     	    18.25
145 	 5 	 -300.00     	   0.00     	    19.59
150 	 5 	 -300.00     	   0.00     	    20.70
155 	 5 	 -300.00     	   0.00     	    21.58
160 	 5 	 -300.00     	   0.00     	    22.25
165 	 5 	 -300.00     	   0.00     	    22.74
170 	 5 	 -300.00     	   0.00     	    23.03
175 	 5 	 -300.00     	   0.00     	    23.15
180 	 5 	 -300.00     	   0.00     	    23.10
0 	 10 	 -300.00     	   0.00     	    -64.53
5 	 10 	 -300.00     	   0.00     	    -64.32
10 	 10 	 -300.00     	   0.00     	    -63.83
15 	 10 	 -300.00     	   0.00     	    -63.05
20 	 10 	 -300.00     	   0.00     	    -61.97
25 	 10 	 -300.00     	   0.00     	    -60.57
30 	 10 	 -300.00     	   0.00     	    -58.84
35 	 10 	 -300.00     	   0.00     	    -56.75
40 	 10 	 -300.00     	   0.00     	    -54.27
45 	 10 	 -300.00     	   0.00     	    -51.37
50 	 10 	 -300.00     	   0.00     	    -48.02
55 	 10 	 -300.00     	   0.00     	    -44.20
60 	 10 	 -300.00     	   0.00     	    -39.91
65 	 10 	 -300.00     	   0.00     	    -35.16
70 	 10 	 -300.00     	   0.00     	    -30.01
75 	 10 	 -300.00     	   0.00     	    -24.54
80 	 10 	 -300.00     	   0.00     	    -18.89
85 	 10 	 -300.00     	   0.00     	    -13.22
90 	 10 	 -300.00     	   0.00     	    -7.66
95 	 10 	 -300.00     	   0.00     	    -2.37
100 	 10 	 -300.00     	   0.00     	    2.54
105 	 10 	 -300.00     	   0.00     	    7.02
110 	 10 	 -300.00     	   0.00     	    11.02
115 	 10 	 -300.00     	   0.00     	    14.56
120 	 10 	 -300.00     	   0.00     	    17.64
125 	 10 	 -300.00     	   0.00     	    20.29
130 	 10 	 -300.00     	   0.00     	    22.57
135 	 10 	 -300.00     	   0.00     	    24.49
140 	 10 	 -300.00     	   0.00     	    26.11
145 	 10 	 -300.00     	   0.00     	    27.44
150 	 10 	 -300.00     	   0.00     	    28.52
155 	 10 	 -300.00     	   0.00     	    29.37
160 	 10 	 -300.00     	   0.00     	    30.01
165 	 10 	 -300.00     	   0.00     	    30.45
170 	 10 	 -300.00     	   0.00     	    30.71
175 	 10 	 -300.00     	   0.00     	    30.79
180 	 10 	 -300.00     	   0.00     	    30.71
0 	 15 	 -300.00     	   0.00     	    -67.78
5 	 15 	 -300.00     	   0.00     	    -67.56
10 	 15 	 -300.00     	   0.00     	    -67.05
15 	 15 	 -300.00     	   0.00     	    -66.24
20 	 15 	 -300.00     	   0.00     	    -65.13
25 	 15 	 -300.00     	   0.00     	    -63.69
30 	 15 	 -300.00     	   0.00     	    -61.90
35 	 15 	 -300.00     	   0.00     	    -59.72
40 	 15 	 -300.00     	   0.00     	    -57.12
45 	 15 	 -300.00     	   0.00     	    -54.05
50 	 15 	 -300.00     	   0.00     	    -50.47
55 	 15 	 -300.00     	   0.00     	    -46.35
60 	 15 	 -300.00     	   0.00     	    -41.67
65 	 15 	 -300.00     	   0.00     	    -36.45
70 	 15 	 -300.00     	   0.00     	    -30.73
75 	 15 	 -300.00     	   0.00     	    -24.64
80 	 15 	 -300.00     	   0.00     	    -18.34
85 	 15 	 -300.00     	   0.00     	    -12.03
90 	 15 	 -300.00     	   0.00     	    -5.90
95 	 15 	 -300.00     	   0.00     	    -0.13
100 	 15 	 -300.00     	   0.00     	    5.17
105 	 15 	 -300.00     	   0.00     	    9.92
110 	 15 	 -300.00     	   0.00     	    14.11
115 	 15 	 -300.00     	   0.00     	    17.75
120 	 15 	 -300.00     	   0.00     	    20.89
125 	 15 	 -300.00     	   0.00     	    23.58
130 	 15 	 -300.00     	   0.00     	    25.85
135 	 15 	 -300.00     	   0.00     	    27.76
140 	 15 	 -300.00     	   0.00     	    29.35
145 	 15 	 -300.00     	   0.00     	    30.65
150 	 15 	 -300.00     	   0.00     	    31.70
155 	 15 	 -300.00     	   0.00     	    32.52
160 	 15 	 -300.00     	   0.00     	    33.14
165 	 15 	 -300.00     	   0.00     	    33.56
170 	 15 	 -300.00     	   0.00     	    33.80
175 	 15 	 -300.00     	   0.00     	    33.87
180 	 15 	 -300.00     	   0.00     	    33.78
0 	 20 	 -300.00     	   0.00     	    -69.61
5 	 20 	 -300.00     	   0.00     	    -69.38
10 	 20 	 -300.00     	   0.00     	    -68.87
15 	 20 	 -300.00     	   0.00     	    -68.05
20 	 20 	 -300.00     	   0.00     	    -66.92
25 	 20 	 -300.00     	   0.00     	    -65.47
30 	 20 	 -300.00     	   0.00     	    -63.65
35 	 20 	 -300.00     	   0.00     	    -61.43
40 	 20 	 -300.00     	   0.00     	    -58.77
45 	 20 	 -300.00     	   0.00     	    -55.61
50 	 20 	 -300.00     	   0.00     	    -51.92
55 	 20 	 -300.00     	   0.00     	    -47.63
60 	 20 	 -300.00     	   0.00     	    -42.73
65 	 20 	 -300.00     	   0.00     	    -37.23
70 	 20 	 -300.00     	   0.00     	    -31.18
75 	 20 	 -300.00     	   0.00     	    -24.71
80 	 20 	 -300.00     	   0.00     	    -18.02
85 	 20 	 -300.00     	   0.00     	    -11.32
90 	 20 	 -300.00     	   0.00     	    -4.86
95 	 20 	 -300.00     	   0.00     	    1.18
100 	 20 	 -300.00     	   0.00     	    6.68
105 	 20 	 -300.00     	   0.00     	    11.57
110 	 20 	 -300.00     	   0.00     	    15.84
115 	 20 	 -300.00     	   0.00     	    19.54
120 	 20 	 -300.00     	   0.00     	    22.70
125 	 20 	 -300.00     	   0.00     	    25.38
130 	 20 	 -300.00     	   0.00     	    27.64
135 	 20 	 -300.00     	   0.00     	    29.54
140 	 20 	 -300.00     	   0.00     	    31.11
145 	 20 	 -300.00     	   0.00     	    32.39
150 	 20 	 -300.00     	   0.00     	    33.42
155 	 20 	 -300.00     	   0.00     	    34.23
160 	 20 	 -300.00     	   0.00     	    34.83
165 	 20 	 -300.00     	   0.00     	    35.24
170 	 20 	 -300.00     	   0.00     	    35.47
175 	 20 	 -300.00     	   0.00     	    35.54
180 	 20 	 -300.00     	   0.00     	    35.45
0 	 25 	 -300.00     	   0.00     	    -70.79
5 	 25 	 -300.00     	   0.00     	    -70.56
10 	 25 	 -300.00     	   0.00     	    -70.04
15 	 25 	 -300.00     	   0.00     	    -69.23
20 	 25 	 -300.00     	   0.00     	    -68.10
25 	 25 	 -300.00     	   0.00     	    -66.63
30 	 25 	 -300.00     	   0.00     	    -64.80
35 	 25 	 -300.00     	   0.00     	    -62.56
40 	 25 	 -300.00     	   0.00     	    -59.86
45 	 25 	 -300.00     	   0.00     	    -56.66
50 	 25 	 -300.00     	   0.00     	    -52.88
55 	 25 	 -300.00     	   0.00     	    -48.49
60 	 25 	 -300.00     	   0.00     	    -43.45
65 	 25 	 -300.00     	   0.00     	    -37.76
70 	 25 	 -300.00     	   0.00     	    -31.49
75 	 25 	 -300.00     	   0.00     	    -24.77
80 	 25 	 -300.00     	   0.00     	    -17.81
85 	 25 	 -300.00     	   0.00     	    -10.86
90 	 25 	 -300.00     	   0.00     	    -4.18
95 	 25 	 -300.00     	   0.00     	    2.03
100 	 25 	 -300.00     	   0.00     	    7.65
105 	 25 	 -300.00     	   0.00     	    12.62
110 	 25 	 -300.00     	   0.00     	    16.95
115 	 25 	 -300.00     	   0.00     	    20.67
120 	 25 	 -300.00     	   0.00     	    23.83
125 	 25 	 -300.00     	   0.00     	    26.51
130 	 25 	 -300.00     	   0.00     	    28.77
135 	 25 	 -300.00     	   0.00     	    30.65
140 	 25 	 -300.00     	   0.00     	    32.21
145 	 25 	 -300.00     	   0.00     	    33.48
150 	 25 	 -300.00     	   0.00     	    34.50
155 	 25 	 -300.00     	   0.00     	    35.30
160 	 25 	 -300.00     	   0.00     	    35.89
165 	 25 	 -300.00     	   0.00     	    36.30
170 	 25 	 -300.00     	   0.00     	    36.53
175 	 25 	 -300.00     	   0.00     	    36.60
180 	 25 	 -300.00     	   0.00     	    36.51
0 	 30 	 -300.00     	   0.00     	    -71.63
5 	 30 	 -300.00     	   0.00     	    -71.40
10 	 30 	 -300.00     	   0.00     	    -70.88
15 	 30 	 -300.00     	   0.00     	    -70.07
20 	 30 	 -300.00     	   0.00     	    -68.94
25 	 30 	 -300.00     	   0.00     	    -67.47
30 	 30 	 -300.00     	   0.00     	    -65.63
35 	 30 	 -300.00     	   0.00     	    -63.37
40 	 30 	 -300.00     	   0.00     	    -60.65
45 	 30 	 -300.00     	   0.00     	    -57.41
50 	 30 	 -300.00     	   0.00     	    -53.59
55 	 30 	 -300.00     	   0.00     	    -49.13
60 	 30 	 -300.00     	   0.00     	    -43.98
65 	 30 	 -300.00     	   0.00     	    -38.16
70 	 30 	 -300.00     	   0.00     	    -31.72
75 	 30 	 -300.00     	   0.00     	    -24.82
80 	 30 	 -300.00     	   0.00     	    -17.67
85 	 30 	 -300.00     	   0.00     	    -10.55
90 	 30 	 -300.00     	   0.00     	    -3.71
95 	 30 	 -300.00     	   0.00     	    2.62
100 	 30 	 -300.00     	   0.00     	    8.33
105 	 30 	 -300.00     	   0.00     	    13.35
110 	 30 	 -300.00     	   0.00     	    17.70
115 	 30 	 -300.00     	   0.00     	    21.43
120 	 30 	 -300.00     	   0.00     	    24.61
125 	 30 	 -300.00     	   0.00     	    27.28
130 	 30 	 -300.00     	   0.00     	    29.53
135 	 30 	 -300.00     	   0.00     	    31.40
140 	 30 	 -300.00     	   0.00     	    32.96
145 	 30 	 -300.00     	   0.00     	    34.22
150 	 30 	 -300.00     	   0.00     	    35.24
155 	 30 	 -300.00     	   0.00     	    36.03
160 	 30 	 -300.00     	   0.00     	    36.62
165 	 30 	 -300.00     	   0.00     	    37.03
170 	 30 	 -300.00     	   0.00     	    37.27
175 	 30 	 -300.00     	   0.00     	    37.34
180 	 30 	 -300.00     	   0.00     	    37.25
0 	 35 	 -300.00     	   0.00     	    -72.26
5 	 35 	 -300.00     	   0.00     	    -72.04
10 	 35 	 -300.00     	   0.00     	    -71.52
15 	 35 	 -300.00     	   0.00     	    -70.71
20 	 35 	 -300.00     	   0.00     	    -69.58
25 	 35 	 -300.00     	   0.00     	    -68.11
30 	 35 	 -300.00     	   0.00     	    -66.26
35 	 35 	 -300.00     	   0.00     	    -64.00
40 	 35 	 -300.00     	   0.00     	    -61.27
45 	 35 	 -300.00     	   0.00     	    -58.00
50 	 35 	 -300.00     	   0.00     	    -54.14
55 	 35 	 -300.00     	   0.00     	    -49.62
60 	 35 	 -300.00     	   0.00     	    -44.40
65 	 35 	 -300.00     	   0.00     	    -38.47
70 	 35 	 -300.00     	   0.00     	    -31.91
75 	 35 	 -300.00     	   0.00     	    -24.87
80 	 35 	 -300.00     	   0.00     	    -17.58
85 	 35 	 -300.00     	   0.00     	    -10.32
90 	 35 	 -300.00     	   0.00     	    -3.38
95 	 35 	 -300.00     	   0.00     	    3.04
100 	 35 	 -300.00     	   0.00     	    8.81
105 	 35 	 -300.00     	   0.00     	    13.87
110 	 35 	 -300.00     	   0.00     	    18.24
115 	 35 	 -300.00     	   0.00     	    21.98
120 	 35 	 -300.00     	   0.00     	    25.15
125 	 35 	 -300.00     	   0.00     	    27.83
130 	 35 	 -300.00     	   0.00     	    30.07
135 	 35 	 -300.00     	   0.00     	    31.94
140 	 35 	 -300.00     	   0.00     	    33.49
145 	 35 	 -300.00     	   0.00     	    34.76
150 	 35 	 -300.00     	   0.00     	    35.77
155 	 35 	 -300.00     	   0.00     	    36.57
160 	 35 	 -300.00     	   0.00     	    37.16
165 	 35 	 -300.00     	   0.00     	    37.57
170 	 35 	 -300.00     	   0.00     	    37.81
175 	 35 	 -300.00     	   0.00     	    37.89
180 	 35 	 -300.00     	   0.00     	    37.81
0 	 40 	 -300.00     	   0.00     	    -72.77
... 159721 more lines ...
Attachment 4: XF_model_19_96.txt
freq : 83.33 MHz
SWR : 1.965000
 Theta     Phi     Gain(dB)     Gain     Phase(deg) 
0 	 0 	 -83.71     	   0.00     	    -158.06
5 	 0 	 -17.86     	   0.02     	    -153.75
10 	 0 	 -11.87     	   0.06     	    -148.66
15 	 0 	 -8.40     	   0.14     	    -144.50
20 	 0 	 -5.97     	   0.25     	    -140.71
25 	 0 	 -4.13     	   0.39     	    -136.31
30 	 0 	 -2.66     	   0.54     	    -131.91
35 	 0 	 -1.45     	   0.72     	    -127.38
40 	 0 	 -0.45     	   0.90     	    -123.42
45 	 0 	 0.39     	   1.09     	    -119.24
50 	 0 	 1.09     	   1.29     	    -115.23
55 	 0 	 1.69     	   1.47     	    -111.53
60 	 0 	 2.18     	   1.65     	    -107.68
65 	 0 	 2.59     	   1.81     	    -104.22
70 	 0 	 2.91     	   1.95     	    -100.95
75 	 0 	 3.15     	   2.07     	    -97.77
80 	 0 	 3.33     	   2.15     	    -94.90
85 	 0 	 3.43     	   2.20     	    -92.40
90 	 0 	 3.46     	   2.22     	    -89.68
95 	 0 	 3.43     	   2.20     	    -87.43
100 	 0 	 3.33     	   2.15     	    -85.51
105 	 0 	 3.15     	   2.07     	    -84.01
110 	 0 	 2.91     	   1.95     	    -82.20
115 	 0 	 2.59     	   1.81     	    -80.97
120 	 0 	 2.18     	   1.65     	    -79.70
125 	 0 	 1.69     	   1.47     	    -78.83
130 	 0 	 1.09     	   1.29     	    -77.85
135 	 0 	 0.39     	   1.09     	    -77.23
140 	 0 	 -0.45     	   0.90     	    -77.60
145 	 0 	 -1.45     	   0.72     	    -77.60
150 	 0 	 -2.66     	   0.54     	    -78.04
155 	 0 	 -4.13     	   0.39     	    -78.59
160 	 0 	 -5.97     	   0.25     	    -79.94
165 	 0 	 -8.40     	   0.14     	    -81.34
170 	 0 	 -11.87     	   0.07     	    -84.60
175 	 0 	 -17.86     	   0.02     	    -89.05
180 	 0 	 -83.70     	   0.00     	    -95.44
0 	 5 	 -83.74     	   0.00     	    -20.42
5 	 5 	 -17.86     	   0.02     	    -21.56
10 	 5 	 -11.87     	   0.06     	    -22.65
15 	 5 	 -8.40     	   0.14     	    -23.78
20 	 5 	 -5.97     	   0.25     	    -24.81
25 	 5 	 -4.13     	   0.39     	    -25.80
30 	 5 	 -2.66     	   0.54     	    -26.78
35 	 5 	 -1.45     	   0.72     	    -27.69
40 	 5 	 -0.45     	   0.90     	    -28.54
45 	 5 	 0.39     	   1.09     	    -29.38
50 	 5 	 1.09     	   1.29     	    -30.15
55 	 5 	 1.69     	   1.47     	    -30.88
60 	 5 	 2.18     	   1.65     	    -31.59
65 	 5 	 2.59     	   1.81     	    -32.25
70 	 5 	 2.91     	   1.95     	    -32.87
75 	 5 	 3.15     	   2.07     	    -33.45
80 	 5 	 3.33     	   2.15     	    -33.97
85 	 5 	 3.43     	   2.20     	    -34.45
90 	 5 	 3.46     	   2.22     	    -34.85
95 	 5 	 3.43     	   2.20     	    -35.18
100 	 5 	 3.33     	   2.15     	    -35.40
105 	 5 	 3.15     	   2.07     	    -35.52
110 	 5 	 2.91     	   1.95     	    -35.51
115 	 5 	 2.59     	   1.81     	    -35.38
120 	 5 	 2.18     	   1.65     	    -35.10
125 	 5 	 1.69     	   1.47     	    -34.70
130 	 5 	 1.09     	   1.29     	    -34.17
135 	 5 	 0.39     	   1.09     	    -33.48
140 	 5 	 -0.45     	   0.90     	    -32.71
145 	 5 	 -1.45     	   0.72     	    -31.84
150 	 5 	 -2.66     	   0.54     	    -30.83
155 	 5 	 -4.13     	   0.39     	    -29.77
160 	 5 	 -5.97     	   0.25     	    -28.61
165 	 5 	 -8.40     	   0.14     	    -27.42
170 	 5 	 -11.87     	   0.07     	    -26.17
175 	 5 	 -17.86     	   0.02     	    -24.90
180 	 5 	 -83.74     	   0.00     	    -23.60
0 	 10 	 -83.84     	   0.00     	    -19.91
5 	 10 	 -17.86     	   0.02     	    -20.98
10 	 10 	 -11.87     	   0.06     	    -22.04
15 	 10 	 -8.40     	   0.14     	    -23.08
20 	 10 	 -5.97     	   0.25     	    -24.09
25 	 10 	 -4.13     	   0.39     	    -25.07
30 	 10 	 -2.66     	   0.54     	    -26.00
35 	 10 	 -1.45     	   0.72     	    -26.89
40 	 10 	 -0.45     	   0.90     	    -27.75
45 	 10 	 0.39     	   1.09     	    -28.55
50 	 10 	 1.09     	   1.29     	    -29.32
55 	 10 	 1.69     	   1.47     	    -30.06
60 	 10 	 2.18     	   1.65     	    -30.76
65 	 10 	 2.59     	   1.81     	    -31.42
70 	 10 	 2.91     	   1.95     	    -32.05
75 	 10 	 3.15     	   2.07     	    -32.64
80 	 10 	 3.33     	   2.15     	    -33.17
85 	 10 	 3.43     	   2.20     	    -33.66
90 	 10 	 3.46     	   2.22     	    -34.07
95 	 10 	 3.43     	   2.20     	    -34.41
100 	 10 	 3.33     	   2.15     	    -34.64
105 	 10 	 3.15     	   2.07     	    -34.77
110 	 10 	 2.91     	   1.95     	    -34.79
115 	 10 	 2.59     	   1.81     	    -34.68
120 	 10 	 2.18     	   1.65     	    -34.44
125 	 10 	 1.69     	   1.47     	    -34.06
130 	 10 	 1.09     	   1.29     	    -33.55
135 	 10 	 0.39     	   1.09     	    -32.91
140 	 10 	 -0.45     	   0.90     	    -32.16
145 	 10 	 -1.45     	   0.72     	    -31.30
150 	 10 	 -2.66     	   0.54     	    -30.34
155 	 10 	 -4.13     	   0.39     	    -29.31
160 	 10 	 -5.97     	   0.25     	    -28.20
165 	 10 	 -8.40     	   0.14     	    -27.05
170 	 10 	 -11.87     	   0.07     	    -25.86
175 	 10 	 -17.86     	   0.02     	    -24.64
180 	 10 	 -83.84     	   0.00     	    -23.37
0 	 15 	 -84.01     	   0.00     	    -19.75
5 	 15 	 -17.86     	   0.02     	    -20.78
10 	 15 	 -11.87     	   0.06     	    -21.80
15 	 15 	 -8.40     	   0.14     	    -22.82
20 	 15 	 -5.97     	   0.25     	    -23.80
25 	 15 	 -4.13     	   0.39     	    -24.75
30 	 15 	 -2.66     	   0.54     	    -25.67
35 	 15 	 -1.45     	   0.72     	    -26.54
40 	 15 	 -0.45     	   0.90     	    -27.38
45 	 15 	 0.39     	   1.09     	    -28.17
50 	 15 	 1.09     	   1.29     	    -28.93
55 	 15 	 1.69     	   1.47     	    -29.66
60 	 15 	 2.18     	   1.65     	    -30.36
65 	 15 	 2.59     	   1.81     	    -31.01
70 	 15 	 2.91     	   1.95     	    -31.63
75 	 15 	 3.15     	   2.07     	    -32.21
80 	 15 	 3.33     	   2.15     	    -32.75
85 	 15 	 3.43     	   2.20     	    -33.22
90 	 15 	 3.46     	   2.22     	    -33.63
95 	 15 	 3.43     	   2.20     	    -33.96
100 	 15 	 3.33     	   2.15     	    -34.19
105 	 15 	 3.15     	   2.07     	    -34.33
110 	 15 	 2.91     	   1.95     	    -34.35
115 	 15 	 2.59     	   1.81     	    -34.24
120 	 15 	 2.18     	   1.65     	    -34.00
125 	 15 	 1.69     	   1.47     	    -33.65
130 	 15 	 1.09     	   1.29     	    -33.16
135 	 15 	 0.39     	   1.09     	    -32.54
140 	 15 	 -0.45     	   0.90     	    -31.82
145 	 15 	 -1.45     	   0.72     	    -30.99
150 	 15 	 -2.66     	   0.54     	    -30.07
155 	 15 	 -4.13     	   0.39     	    -29.06
160 	 15 	 -5.97     	   0.25     	    -28.00
165 	 15 	 -8.40     	   0.14     	    -26.87
170 	 15 	 -11.87     	   0.07     	    -25.71
175 	 15 	 -17.86     	   0.02     	    -24.52
180 	 15 	 -84.01     	   0.00     	    -23.30
0 	 20 	 -84.25     	   0.00     	    -19.66
5 	 20 	 -17.86     	   0.02     	    -20.66
10 	 20 	 -11.87     	   0.06     	    -21.65
15 	 20 	 -8.40     	   0.14     	    -22.63
20 	 20 	 -5.97     	   0.25     	    -23.59
25 	 20 	 -4.13     	   0.39     	    -24.52
30 	 20 	 -2.66     	   0.54     	    -25.42
35 	 20 	 -1.45     	   0.72     	    -26.27
40 	 20 	 -0.45     	   0.90     	    -27.10
45 	 20 	 0.39     	   1.09     	    -27.88
50 	 20 	 1.09     	   1.29     	    -28.63
55 	 20 	 1.69     	   1.47     	    -29.35
60 	 20 	 2.18     	   1.65     	    -30.03
65 	 20 	 2.59     	   1.81     	    -30.67
70 	 20 	 2.91     	   1.95     	    -31.28
75 	 20 	 3.15     	   2.07     	    -31.84
80 	 20 	 3.33     	   2.15     	    -32.36
85 	 20 	 3.43     	   2.20     	    -32.82
90 	 20 	 3.46     	   2.22     	    -33.21
95 	 20 	 3.43     	   2.20     	    -33.52
100 	 20 	 3.33     	   2.15     	    -33.75
105 	 20 	 3.15     	   2.07     	    -33.88
110 	 20 	 2.91     	   1.95     	    -33.89
115 	 20 	 2.59     	   1.81     	    -33.79
120 	 20 	 2.18     	   1.65     	    -33.57
125 	 20 	 1.69     	   1.47     	    -33.22
130 	 20 	 1.09     	   1.29     	    -32.76
135 	 20 	 0.39     	   1.09     	    -32.17
140 	 20 	 -0.45     	   0.90     	    -31.48
145 	 20 	 -1.45     	   0.72     	    -30.68
150 	 20 	 -2.66     	   0.54     	    -29.80
155 	 20 	 -4.13     	   0.39     	    -28.83
160 	 20 	 -5.97     	   0.25     	    -27.80
165 	 20 	 -8.40     	   0.14     	    -26.72
170 	 20 	 -11.87     	   0.07     	    -25.60
175 	 20 	 -17.86     	   0.02     	    -24.44
180 	 20 	 -84.25     	   0.00     	    -23.27
0 	 25 	 -84.56     	   0.00     	    -19.61
5 	 25 	 -17.86     	   0.02     	    -20.56
10 	 25 	 -11.87     	   0.06     	    -21.52
15 	 25 	 -8.40     	   0.14     	    -22.47
20 	 25 	 -5.97     	   0.25     	    -23.40
25 	 25 	 -4.13     	   0.39     	    -24.30
30 	 25 	 -2.66     	   0.54     	    -25.17
35 	 25 	 -1.45     	   0.72     	    -26.01
40 	 25 	 -0.45     	   0.90     	    -26.81
45 	 25 	 0.39     	   1.09     	    -27.58
50 	 25 	 1.09     	   1.29     	    -28.32
55 	 25 	 1.69     	   1.47     	    -29.01
60 	 25 	 2.18     	   1.65     	    -29.68
65 	 25 	 2.59     	   1.81     	    -30.31
70 	 25 	 2.91     	   1.95     	    -30.89
75 	 25 	 3.15     	   2.07     	    -31.44
80 	 25 	 3.33     	   2.15     	    -31.93
85 	 25 	 3.43     	   2.20     	    -32.37
90 	 25 	 3.46     	   2.22     	    -32.75
95 	 25 	 3.43     	   2.20     	    -33.04
100 	 25 	 3.33     	   2.15     	    -33.25
105 	 25 	 3.15     	   2.07     	    -33.37
110 	 25 	 2.91     	   1.95     	    -33.38
115 	 25 	 2.59     	   1.81     	    -33.28
120 	 25 	 2.18     	   1.65     	    -33.07
125 	 25 	 1.69     	   1.47     	    -32.74
130 	 25 	 1.09     	   1.29     	    -32.30
135 	 25 	 0.39     	   1.09     	    -31.75
140 	 25 	 -0.45     	   0.90     	    -31.09
145 	 25 	 -1.45     	   0.72     	    -30.35
150 	 25 	 -2.66     	   0.54     	    -29.50
155 	 25 	 -4.13     	   0.39     	    -28.58
160 	 25 	 -5.97     	   0.25     	    -27.60
165 	 25 	 -8.40     	   0.14     	    -26.56
170 	 25 	 -11.87     	   0.07     	    -25.49
175 	 25 	 -17.86     	   0.02     	    -24.38
180 	 25 	 -84.56     	   0.00     	    -23.25
0 	 30 	 -84.95     	   0.00     	    -19.57
5 	 30 	 -17.86     	   0.02     	    -20.48
10 	 30 	 -11.87     	   0.06     	    -21.40
15 	 30 	 -8.40     	   0.14     	    -22.31
20 	 30 	 -5.97     	   0.25     	    -23.20
25 	 30 	 -4.13     	   0.39     	    -24.07
30 	 30 	 -2.66     	   0.54     	    -24.92
35 	 30 	 -1.45     	   0.72     	    -25.73
40 	 30 	 -0.45     	   0.90     	    -26.51
45 	 30 	 0.39     	   1.09     	    -27.26
50 	 30 	 1.09     	   1.29     	    -27.97
55 	 30 	 1.69     	   1.47     	    -28.65
60 	 30 	 2.18     	   1.65     	    -29.30
65 	 30 	 2.59     	   1.81     	    -29.90
70 	 30 	 2.91     	   1.95     	    -30.47
75 	 30 	 3.15     	   2.07     	    -30.99
80 	 30 	 3.33     	   2.15     	    -31.45
85 	 30 	 3.43     	   2.20     	    -31.87
90 	 30 	 3.46     	   2.22     	    -32.21
95 	 30 	 3.43     	   2.20     	    -32.49
100 	 30 	 3.33     	   2.15     	    -32.69
105 	 30 	 3.15     	   2.07     	    -32.79
110 	 30 	 2.91     	   1.95     	    -32.80
115 	 30 	 2.59     	   1.81     	    -32.71
120 	 30 	 2.18     	   1.65     	    -32.51
125 	 30 	 1.69     	   1.47     	    -32.20
130 	 30 	 1.09     	   1.29     	    -31.79
135 	 30 	 0.39     	   1.09     	    -31.27
140 	 30 	 -0.45     	   0.90     	    -30.66
145 	 30 	 -1.45     	   0.72     	    -29.95
150 	 30 	 -2.66     	   0.54     	    -29.16
155 	 30 	 -4.13     	   0.39     	    -28.30
160 	 30 	 -5.97     	   0.25     	    -27.37
165 	 30 	 -8.40     	   0.14     	    -26.39
170 	 30 	 -11.87     	   0.07     	    -25.36
175 	 30 	 -17.86     	   0.02     	    -24.31
180 	 30 	 -84.96     	   0.00     	    -23.23
0 	 35 	 -85.43     	   0.00     	    -19.55
5 	 35 	 -17.86     	   0.02     	    -20.41
10 	 35 	 -11.87     	   0.06     	    -21.27
15 	 35 	 -8.40     	   0.14     	    -22.14
20 	 35 	 -5.97     	   0.25     	    -22.99
25 	 35 	 -4.13     	   0.39     	    -23.82
30 	 35 	 -2.66     	   0.54     	    -24.63
35 	 35 	 -1.45     	   0.72     	    -25.42
40 	 35 	 -0.45     	   0.90     	    -26.17
45 	 35 	 0.39     	   1.09     	    -26.90
50 	 35 	 1.09     	   1.29     	    -27.58
55 	 35 	 1.69     	   1.47     	    -28.24
60 	 35 	 2.18     	   1.65     	    -28.86
65 	 35 	 2.59     	   1.81     	    -29.44
70 	 35 	 2.91     	   1.95     	    -29.98
75 	 35 	 3.15     	   2.07     	    -30.47
80 	 35 	 3.33     	   2.15     	    -30.91
85 	 35 	 3.43     	   2.20     	    -31.30
90 	 35 	 3.46     	   2.22     	    -31.61
95 	 35 	 3.43     	   2.20     	    -31.87
100 	 35 	 3.33     	   2.15     	    -32.05
105 	 35 	 3.15     	   2.07     	    -32.14
110 	 35 	 2.91     	   1.95     	    -32.15
115 	 35 	 2.59     	   1.81     	    -32.06
120 	 35 	 2.18     	   1.65     	    -31.88
125 	 35 	 1.69     	   1.47     	    -31.60
130 	 35 	 1.09     	   1.29     	    -31.22
135 	 35 	 0.39     	   1.09     	    -30.74
140 	 35 	 -0.45     	   0.90     	    -30.17
145 	 35 	 -1.45     	   0.72     	    -29.52
150 	 35 	 -2.66     	   0.54     	    -28.79
155 	 35 	 -4.13     	   0.39     	    -27.98
160 	 35 	 -5.97     	   0.25     	    -27.11
165 	 35 	 -8.40     	   0.14     	    -26.19
170 	 35 	 -11.87     	   0.07     	    -25.23
175 	 35 	 -17.86     	   0.02     	    -24.23
180 	 35 	 -85.44     	   0.00     	    -23.22
0 	 40 	 -86.01     	   0.00     	    -19.53
... 159721 more lines ...
Attachment 5: XF_model_29_87.txt
freq : 83.33 MHz
SWR : 1.965000
 Theta     Phi     Gain(dB)     Gain     Phase(deg) 
0 	 0 	 -77.59     	   0.00     	    -23.13
5 	 0 	 -17.30     	   0.02     	    -23.13
10 	 0 	 -11.30     	   0.07     	    -23.11
15 	 0 	 -7.83     	   0.16     	    -23.07
20 	 0 	 -5.40     	   0.29     	    -23.00
25 	 0 	 -3.56     	   0.44     	    -22.93
30 	 0 	 -2.09     	   0.62     	    -22.84
35 	 0 	 -0.89     	   0.82     	    -22.73
40 	 0 	 0.11     	   1.03     	    -22.61
45 	 0 	 0.95     	   1.24     	    -22.47
50 	 0 	 1.66     	   1.46     	    -22.33
55 	 0 	 2.25     	   1.68     	    -22.17
60 	 0 	 2.74     	   1.88     	    -22.01
65 	 0 	 3.14     	   2.06     	    -21.84
70 	 0 	 3.46     	   2.22     	    -21.66
75 	 0 	 3.71     	   2.35     	    -21.48
80 	 0 	 3.88     	   2.44     	    -21.29
85 	 0 	 3.99     	   2.50     	    -21.11
90 	 0 	 4.02     	   2.52     	    -20.92
95 	 0 	 3.99     	   2.50     	    -20.74
100 	 0 	 3.88     	   2.45     	    -20.55
105 	 0 	 3.71     	   2.35     	    -20.38
110 	 0 	 3.47     	   2.22     	    -20.20
115 	 0 	 3.15     	   2.06     	    -20.03
120 	 0 	 2.74     	   1.88     	    -19.87
125 	 0 	 2.25     	   1.68     	    -19.72
130 	 0 	 1.66     	   1.47     	    -19.58
135 	 0 	 0.96     	   1.25     	    -19.44
140 	 0 	 0.12     	   1.03     	    -19.31
145 	 0 	 -0.88     	   0.82     	    -19.20
150 	 0 	 -2.08     	   0.62     	    -19.10
155 	 0 	 -3.55     	   0.44     	    -19.02
160 	 0 	 -5.39     	   0.29     	    -18.94
165 	 0 	 -7.82     	   0.17     	    -18.89
170 	 0 	 -11.29     	   0.07     	    -18.84
175 	 0 	 -17.28     	   0.02     	    -18.82
180 	 0 	 -77.55     	   0.00     	    -18.81
0 	 5 	 -77.73     	   0.00     	    -18.36
5 	 5 	 -17.30     	   0.02     	    -18.44
10 	 5 	 -11.30     	   0.07     	    -18.54
15 	 5 	 -7.83     	   0.16     	    -18.64
20 	 5 	 -5.40     	   0.29     	    -18.77
25 	 5 	 -3.56     	   0.44     	    -18.92
30 	 5 	 -2.09     	   0.62     	    -19.09
35 	 5 	 -0.89     	   0.82     	    -19.27
40 	 5 	 0.11     	   1.03     	    -19.47
45 	 5 	 0.95     	   1.24     	    -19.67
50 	 5 	 1.66     	   1.46     	    -19.89
55 	 5 	 2.25     	   1.68     	    -20.12
60 	 5 	 2.74     	   1.88     	    -20.35
65 	 5 	 3.14     	   2.06     	    -20.60
70 	 5 	 3.46     	   2.22     	    -20.84
75 	 5 	 3.71     	   2.35     	    -21.08
80 	 5 	 3.88     	   2.44     	    -21.33
85 	 5 	 3.99     	   2.50     	    -21.57
90 	 5 	 4.02     	   2.52     	    -21.81
95 	 5 	 3.99     	   2.50     	    -22.04
100 	 5 	 3.88     	   2.45     	    -22.28
105 	 5 	 3.71     	   2.35     	    -22.50
110 	 5 	 3.47     	   2.22     	    -22.72
115 	 5 	 3.15     	   2.06     	    -22.92
120 	 5 	 2.74     	   1.88     	    -23.12
125 	 5 	 2.25     	   1.68     	    -23.30
130 	 5 	 1.66     	   1.47     	    -23.47
135 	 5 	 0.96     	   1.25     	    -23.62
140 	 5 	 0.12     	   1.03     	    -23.75
145 	 5 	 -0.88     	   0.82     	    -23.85
150 	 5 	 -2.08     	   0.62     	    -23.94
155 	 5 	 -3.55     	   0.44     	    -24.00
160 	 5 	 -5.39     	   0.29     	    -24.04
165 	 5 	 -7.82     	   0.17     	    -24.06
170 	 5 	 -11.29     	   0.07     	    -24.04
175 	 5 	 -17.28     	   0.02     	    -24.01
180 	 5 	 -77.69     	   0.00     	    -23.95
0 	 10 	 -77.94     	   0.00     	    -16.18
5 	 10 	 -17.30     	   0.02     	    -16.28
10 	 10 	 -11.30     	   0.07     	    -16.44
15 	 10 	 -7.83     	   0.16     	    -16.61
20 	 10 	 -5.40     	   0.29     	    -16.84
25 	 10 	 -3.56     	   0.44     	    -17.09
30 	 10 	 -2.09     	   0.62     	    -17.37
35 	 10 	 -0.89     	   0.82     	    -17.69
40 	 10 	 0.11     	   1.03     	    -18.03
45 	 10 	 0.95     	   1.24     	    -18.40
50 	 10 	 1.66     	   1.46     	    -18.78
55 	 10 	 2.25     	   1.68     	    -19.19
60 	 10 	 2.74     	   1.88     	    -19.60
65 	 10 	 3.14     	   2.06     	    -20.03
70 	 10 	 3.46     	   2.22     	    -20.46
75 	 10 	 3.71     	   2.35     	    -20.89
80 	 10 	 3.88     	   2.44     	    -21.33
85 	 10 	 3.99     	   2.50     	    -21.76
90 	 10 	 4.02     	   2.52     	    -22.19
95 	 10 	 3.99     	   2.50     	    -22.61
100 	 10 	 3.88     	   2.45     	    -23.02
105 	 10 	 3.71     	   2.35     	    -23.43
110 	 10 	 3.47     	   2.22     	    -23.82
115 	 10 	 3.15     	   2.06     	    -24.20
120 	 10 	 2.74     	   1.88     	    -24.55
125 	 10 	 2.25     	   1.68     	    -24.88
130 	 10 	 1.66     	   1.47     	    -25.19
135 	 10 	 0.96     	   1.25     	    -25.46
140 	 10 	 0.12     	   1.03     	    -25.71
145 	 10 	 -0.88     	   0.82     	    -25.92
150 	 10 	 -2.08     	   0.62     	    -26.09
155 	 10 	 -3.55     	   0.44     	    -26.22
160 	 10 	 -5.39     	   0.29     	    -26.30
165 	 10 	 -7.82     	   0.17     	    -26.35
170 	 10 	 -11.29     	   0.07     	    -26.36
175 	 10 	 -17.28     	   0.02     	    -26.33
180 	 10 	 -77.89     	   0.00     	    -26.25
0 	 15 	 -78.23     	   0.00     	    -14.91
5 	 15 	 -17.30     	   0.02     	    -15.04
10 	 15 	 -11.30     	   0.07     	    -15.22
15 	 15 	 -7.83     	   0.16     	    -15.44
20 	 15 	 -5.40     	   0.29     	    -15.71
25 	 15 	 -3.56     	   0.44     	    -16.02
30 	 15 	 -2.09     	   0.62     	    -16.37
35 	 15 	 -0.89     	   0.82     	    -16.76
40 	 15 	 0.11     	   1.03     	    -17.19
45 	 15 	 0.95     	   1.24     	    -17.64
50 	 15 	 1.66     	   1.46     	    -18.12
55 	 15 	 2.25     	   1.68     	    -18.63
60 	 15 	 2.74     	   1.88     	    -19.14
65 	 15 	 3.14     	   2.06     	    -19.68
70 	 15 	 3.46     	   2.22     	    -20.21
75 	 15 	 3.71     	   2.35     	    -20.76
80 	 15 	 3.88     	   2.44     	    -21.30
85 	 15 	 3.99     	   2.50     	    -21.85
90 	 15 	 4.02     	   2.52     	    -22.39
95 	 15 	 3.99     	   2.50     	    -22.92
100 	 15 	 3.88     	   2.45     	    -23.44
105 	 15 	 3.71     	   2.35     	    -23.94
110 	 15 	 3.47     	   2.22     	    -24.43
115 	 15 	 3.15     	   2.06     	    -24.91
120 	 15 	 2.74     	   1.88     	    -25.35
125 	 15 	 2.25     	   1.68     	    -25.77
130 	 15 	 1.66     	   1.47     	    -26.16
135 	 15 	 0.96     	   1.25     	    -26.51
140 	 15 	 0.12     	   1.03     	    -26.82
145 	 15 	 -0.88     	   0.82     	    -27.09
150 	 15 	 -2.08     	   0.62     	    -27.31
155 	 15 	 -3.55     	   0.44     	    -27.48
160 	 15 	 -5.39     	   0.29     	    -27.60
165 	 15 	 -7.82     	   0.17     	    -27.67
170 	 15 	 -11.29     	   0.07     	    -27.68
175 	 15 	 -17.28     	   0.02     	    -27.65
180 	 15 	 -78.17     	   0.00     	    -27.56
0 	 20 	 -78.59     	   0.00     	    -14.07
5 	 20 	 -17.30     	   0.02     	    -14.21
10 	 20 	 -11.30     	   0.07     	    -14.41
15 	 20 	 -7.83     	   0.16     	    -14.66
20 	 20 	 -5.40     	   0.29     	    -14.95
25 	 20 	 -3.56     	   0.44     	    -15.30
30 	 20 	 -2.09     	   0.62     	    -15.70
35 	 20 	 -0.89     	   0.82     	    -16.14
40 	 20 	 0.11     	   1.03     	    -16.61
45 	 20 	 0.95     	   1.24     	    -17.12
50 	 20 	 1.66     	   1.46     	    -17.66
55 	 20 	 2.25     	   1.68     	    -18.23
60 	 20 	 2.74     	   1.88     	    -18.82
65 	 20 	 3.14     	   2.06     	    -19.42
70 	 20 	 3.46     	   2.22     	    -20.03
75 	 20 	 3.71     	   2.35     	    -20.64
80 	 20 	 3.88     	   2.44     	    -21.26
85 	 20 	 3.99     	   2.50     	    -21.88
90 	 20 	 4.02     	   2.52     	    -22.49
95 	 20 	 3.99     	   2.50     	    -23.09
100 	 20 	 3.88     	   2.45     	    -23.69
105 	 20 	 3.71     	   2.35     	    -24.26
110 	 20 	 3.47     	   2.22     	    -24.82
115 	 20 	 3.15     	   2.06     	    -25.36
120 	 20 	 2.74     	   1.88     	    -25.87
125 	 20 	 2.25     	   1.68     	    -26.34
130 	 20 	 1.66     	   1.47     	    -26.78
135 	 20 	 0.96     	   1.25     	    -27.18
140 	 20 	 0.12     	   1.03     	    -27.53
145 	 20 	 -0.88     	   0.82     	    -27.84
150 	 20 	 -2.08     	   0.62     	    -28.09
155 	 20 	 -3.55     	   0.44     	    -28.29
160 	 20 	 -5.40     	   0.29     	    -28.43
165 	 20 	 -7.82     	   0.17     	    -28.52
170 	 20 	 -11.29     	   0.07     	    -28.54
175 	 20 	 -17.28     	   0.02     	    -28.51
180 	 20 	 -78.53     	   0.00     	    -28.42
0 	 25 	 -79.03     	   0.00     	    -13.47
5 	 25 	 -17.30     	   0.02     	    -13.62
10 	 25 	 -11.30     	   0.07     	    -13.83
15 	 25 	 -7.83     	   0.16     	    -14.09
20 	 25 	 -5.40     	   0.29     	    -14.41
25 	 25 	 -3.56     	   0.44     	    -14.78
30 	 25 	 -2.09     	   0.62     	    -15.20
35 	 25 	 -0.89     	   0.82     	    -15.67
40 	 25 	 0.11     	   1.03     	    -16.18
45 	 25 	 0.95     	   1.24     	    -16.73
50 	 25 	 1.66     	   1.46     	    -17.31
55 	 25 	 2.25     	   1.68     	    -17.92
60 	 25 	 2.74     	   1.88     	    -18.55
65 	 25 	 3.14     	   2.06     	    -19.20
70 	 25 	 3.46     	   2.22     	    -19.86
75 	 25 	 3.71     	   2.35     	    -20.53
80 	 25 	 3.88     	   2.44     	    -21.20
85 	 25 	 3.99     	   2.50     	    -21.87
90 	 25 	 4.02     	   2.52     	    -22.54
95 	 25 	 3.99     	   2.50     	    -23.20
100 	 25 	 3.88     	   2.45     	    -23.84
105 	 25 	 3.71     	   2.35     	    -24.47
110 	 25 	 3.47     	   2.22     	    -25.08
115 	 25 	 3.15     	   2.06     	    -25.66
120 	 25 	 2.74     	   1.88     	    -26.21
125 	 25 	 2.25     	   1.68     	    -26.73
130 	 25 	 1.66     	   1.47     	    -27.21
135 	 25 	 0.96     	   1.25     	    -27.64
140 	 25 	 0.12     	   1.03     	    -28.03
145 	 25 	 -0.88     	   0.82     	    -28.36
150 	 25 	 -2.08     	   0.62     	    -28.64
155 	 25 	 -3.55     	   0.44     	    -28.86
160 	 25 	 -5.40     	   0.29     	    -29.02
165 	 25 	 -7.82     	   0.17     	    -29.12
170 	 25 	 -11.29     	   0.07     	    -29.15
175 	 25 	 -17.28     	   0.02     	    -29.13
180 	 25 	 -78.97     	   0.00     	    -29.04
0 	 30 	 -79.57     	   0.00     	    -13.01
5 	 30 	 -17.30     	   0.02     	    -13.16
10 	 30 	 -11.30     	   0.07     	    -13.37
15 	 30 	 -7.83     	   0.16     	    -13.65
20 	 30 	 -5.40     	   0.29     	    -13.97
25 	 30 	 -3.56     	   0.44     	    -14.36
30 	 30 	 -2.09     	   0.62     	    -14.80
35 	 30 	 -0.89     	   0.82     	    -15.29
40 	 30 	 0.11     	   1.03     	    -15.82
45 	 30 	 0.95     	   1.24     	    -16.40
50 	 30 	 1.66     	   1.46     	    -17.01
55 	 30 	 2.25     	   1.68     	    -17.65
60 	 30 	 2.74     	   1.88     	    -18.32
65 	 30 	 3.14     	   2.06     	    -19.00
70 	 30 	 3.46     	   2.22     	    -19.70
75 	 30 	 3.71     	   2.35     	    -20.41
80 	 30 	 3.88     	   2.44     	    -21.12
85 	 30 	 3.99     	   2.50     	    -21.84
90 	 30 	 4.02     	   2.52     	    -22.55
95 	 30 	 3.99     	   2.50     	    -23.24
100 	 30 	 3.88     	   2.45     	    -23.93
105 	 30 	 3.71     	   2.35     	    -24.60
110 	 30 	 3.47     	   2.22     	    -25.25
115 	 30 	 3.15     	   2.06     	    -25.87
120 	 30 	 2.74     	   1.88     	    -26.46
125 	 30 	 2.25     	   1.68     	    -27.01
130 	 30 	 1.66     	   1.47     	    -27.52
135 	 30 	 0.96     	   1.25     	    -27.98
140 	 30 	 0.12     	   1.03     	    -28.39
145 	 30 	 -0.88     	   0.82     	    -28.75
150 	 30 	 -2.08     	   0.62     	    -29.05
155 	 30 	 -3.55     	   0.44     	    -29.28
160 	 30 	 -5.40     	   0.29     	    -29.46
165 	 30 	 -7.82     	   0.17     	    -29.57
170 	 30 	 -11.29     	   0.07     	    -29.61
175 	 30 	 -17.28     	   0.02     	    -29.59
180 	 30 	 -79.50     	   0.00     	    -29.50
0 	 35 	 -80.22     	   0.00     	    -12.65
5 	 35 	 -17.30     	   0.02     	    -12.80
10 	 35 	 -11.30     	   0.07     	    -13.01
15 	 35 	 -7.83     	   0.16     	    -13.28
20 	 35 	 -5.40     	   0.29     	    -13.62
25 	 35 	 -3.56     	   0.44     	    -14.02
30 	 35 	 -2.09     	   0.62     	    -14.47
35 	 35 	 -0.89     	   0.82     	    -14.97
40 	 35 	 0.11     	   1.03     	    -15.52
45 	 35 	 0.95     	   1.24     	    -16.11
50 	 35 	 1.66     	   1.46     	    -16.75
55 	 35 	 2.25     	   1.68     	    -17.41
60 	 35 	 2.74     	   1.88     	    -18.10
65 	 35 	 3.14     	   2.06     	    -18.81
70 	 35 	 3.46     	   2.22     	    -19.54
75 	 35 	 3.71     	   2.35     	    -20.28
80 	 35 	 3.88     	   2.44     	    -21.03
85 	 35 	 3.99     	   2.50     	    -21.78
90 	 35 	 4.02     	   2.52     	    -22.52
95 	 35 	 3.99     	   2.50     	    -23.26
100 	 35 	 3.88     	   2.45     	    -23.98
105 	 35 	 3.71     	   2.35     	    -24.68
110 	 35 	 3.47     	   2.22     	    -25.36
115 	 35 	 3.15     	   2.06     	    -26.02
120 	 35 	 2.74     	   1.88     	    -26.63
125 	 35 	 2.25     	   1.68     	    -27.21
130 	 35 	 1.66     	   1.47     	    -27.75
135 	 35 	 0.96     	   1.25     	    -28.23
140 	 35 	 0.12     	   1.03     	    -28.66
145 	 35 	 -0.88     	   0.82     	    -29.04
150 	 35 	 -2.08     	   0.62     	    -29.36
155 	 35 	 -3.55     	   0.44     	    -29.61
160 	 35 	 -5.40     	   0.29     	    -29.80
165 	 35 	 -7.82     	   0.17     	    -29.92
170 	 35 	 -11.29     	   0.07     	    -29.97
175 	 35 	 -17.28     	   0.02     	    -29.96
180 	 35 	 -80.14     	   0.00     	    -29.87
0 	 40 	 -80.99     	   0.00     	    -12.34
... 159721 more lines ...
  188   Fri Dec 30 01:16:52 2022 Alex MRun Details: 2022_12_29

We began a new run of the curved sided GA. Previously, we conducted a run just like this in July of 2022 (titled 2022_07_15_Latest_Greatest). In that run, we made substantial updates to the loop, including using the latest version of AraSim. However, we discovered after the run (which had a very flat fitness score growth curve) that we had not modified AraSim to take in gainfiles appropriately (so it was just evaluating the ARA bicone repeatedly). We've fixed this issue and a few more (see the github repository for the issues that exist and have been resolved) and are redoing this run. The run details will look much the same as that one and are visible in the attached file. Here is the location of the directory where the data for this run will be stored: /fs/ess/PAS1960/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2022_12_29

For a list of changes made in this run compared to previous ones, see this ELOG post on the previous run: http://radiorm.physics.ohio-state.edu/elog/GENETIS/186

Attachment 1: run_details.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2022_12_29'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100			## number of generations (after initial) to run through
NPOP=100				## number of individuals per generation; please keep this value below 99
Seeds=5			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=60000			## Number of Neutrinos Thrown in AraSim   
exp=18				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=1			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=0			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=96			## Number (not fraction!) of individuals formed through crossover
MUTATION=25			## Probability of mutation (divided by 100)
SIGMA=6				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=2			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=2			## Percent of individuals selected through tournament (divided by 10)
RANK=6				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

#####################################################################################################################################################
  187   Mon Dec 5 17:46:40 2022 Dylan WellsConstraints on PUEO evolved antennas

Variables of Evolved Antennas

Wall variables:
S -- length of bottom of the walls
m -- slope of the walls (currently set to 1)
H -- height of walls
x0, y0, z0 -- 3D coordinates of the bottom of the ridge
xf, yf, zf -- 3D coordinates of the top of the ridge
Beta -- curvature of the ridge

 

Antenna Walls

S is half the side length of the bottom wall
m is the slope of the outer wall
H is the max height of the outer wall

Current Constraints:

S < 50cm
H < 50cm
m = 1

Antenna Ridges

x_0, y_0, z_0 are the innitial points of the inner most part of the ridge
x_f, y_f, z_f are the final points of the inner most part of the ridge
tau is the parametric time range beta is the slope of the curve of the ridge

Current Constraints:

tau = 0.26
x_f = S
0 < x_0 <= x_f
0 < y_0 <= x_0
0 < y_f < z_f
z_0 = 0
0 < z_f <= H
(4/30) * z_f < beta < 7 * z_f (for z_f in meters, designs will 'compile' in xfdtd above this upper limit, but the curve is functionally a line for all values greater)

  186   Mon Nov 28 10:44:27 2022 Alex MRun Details Latest_Greatest_2022_11_26

Here are the changes that have been made in this (and the preceding) run relative to what we have been doing before.

  1. The newest version of AraSim has been implemented.
    1. This was done because AraSim has gone through significant changes since 2019 that make it more accurate and makes it run faster.
  2. The minimum length has been decreased to 10 cm per side.
    1. This was done because we previously tested shorter lengths for a response to the reviewer when we submitting the paper to Phys Rev D. Previously, we thought that going below 37.5 cm would lead to unreliable results, but we are reassured that that is not the case now.
  3. The GA is recording the parents and operators used to generate individuals.
    1. This should allow us to look back and make a "history" of the evolution by seeing where genes come from in each generation.
  4. The number of individuals has been increased to 100 per generation.
    1. Ryan demonstrated that a higher number of individuals does lead to a substantial improvement in the speed at which the evolution converges. 
      1. We previously thought that it did not make a big difference. However, that was done by measuring the average maximum fitness score. If we measure how many generations it takes for the evolution to reach a benchmark score, we find that more individuals helps significantly.
  5. The number of neutrinos per individual has been increased to 600k.
    1. This was done to make the fitness scores more precise. At 300k neutrinos, we expect an error of around 0.2. This will cut things down closer to 0.1, which may help us decrease the number of outlier measurements without increasing run time too much because of the AraSim speed up.

This run may take longer than previous runs due to the increased number of individuals. There may need to be modifications made to resolve or work around AraSim errors that delay the loop (due to the auto-resubmit function). Find the details of the run attached.

Attachment 1: run_details_2022_11_26.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2022_11_26_Latest_Greatest'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100			## number of generations (after initial) to run through
NPOP=100				## number of individuals per generation; please keep this value below 99
Seeds=5			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=120000			## Number of Neutrinos Thrown in AraSim   
exp=18				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=1			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=0			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=96			## Number (not fraction!) of individuals formed through crossover
MUTATION=4			## Probability of mutation (divided by 100)
SIGMA=6				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=2			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=2			## Percent of individuals selected through tournament (divided by 10)
RANK=6				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

#####################################################################################################################################################
  185   Thu Nov 10 10:42:20 2022 Ryan DeboltOptimizations

This is the plot for the run type that had the best performance in the most recent optimization run that was completed. The most optimized runs from these collections are decided by which run types achieve a chi-squared value of 0.1 in the fewest generations (correlating to about a 0.9 fitness score). However, the genetic algorithm does not use Chi-squared directly, instead trying to maximize the fitness score (which uses a chi-squared in the denominator) that simulates the error we see in arasim. This fitness score is usually maximized at 1.0 but the simulated error can push the score slightly beyond this. This test was conducted with a simulated error of 0.1. This optimization holds the selection methods steady at 2 tournament 2 roulette and 6 rank selected individuals per 10 selection events. The changing parameter values are in the amounts of Reproduction, Crossover, Immigration, and mutation (rate and width) that the GA performs each generation. Each generation uses 100 individuals. In the graph below, the dotted lines are the minimum Chi^2 values at each generation, solid lines are the maximum fitness score. Each color represents a different run using the same parameters and dotted and solid lines sharing the same color represent the same run. The prevailing trend in the tests leading up to this test has been that the most optimized runs have low amounts of reproduction, high amounts of crossover, and they have been pushing the boundaries of the mutation rate and gaussian width of those mutations and this run follows that trend. The ranges of values we tested over were 0-12R, 88-100C, 15-25M_Rate, and 3-7 sigma, up from the previous test. This run took an average of 16.8 +/- 11.9 generations to reach the 0.1 chi-squared benchmark, the next closest run took 20.3 +/- 10.9 generations to reach the same point, while the most optimized run from an earlier test came in as the 10th best run taking 21.9 +/- 14.4 generations. The graph shows the behavior of this by showing large improvements in early generations that tend to quickly plateau around the maximum value before oscillating around the peak it reaches. Oscillations could be caused by either small mutations around our answer and displacement from the simulated error. The Chi-squared values show a much smoother behavior with smaller oscillations at the end of the run, which helps demonstrate the impact of the error on the behavior.

Attachment 1: Plot0_96_25_6.png
Plot0_96_25_6.png
  184   Mon Oct 24 17:44:51 2022 Ryan DeboltIcemc inputs

Here is our current assumption of the antenna angles needed for the icemc inputs. 

Attachment 1: 261D6FA3-5612-412F-80FA-8AD961F7331A.jpeg
261D6FA3-5612-412F-80FA-8AD961F7331A.jpeg
  183   Mon Oct 24 16:07:22 2022 Dylan WellsCreating the matching circuit design

The first part of designing the matching crictuit was choosing a frequency range to match over. We chose 100 MHz to 1000 MHz.

The geometric mean of this range in 316.227 MHz, which is the ideal frequeny to match to.

Then, we need the impedance of the antenna we are matching to.

The data for the best antenna is found in 

/fs/project/PAS0654/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/AraSim_Polarity_Fix_2021_03_19/AraSim_Polarity_Fix_2021_03_19.xf/Simulations/001108/Run0001/output/SteadyStateOutput

The files begin at 83.33 MHz and increment by 16.66 MHz, so file 14 (316.57 MHz) is the best choice for matching.

This antenna has Impedance Z = 229.839 -i151.515 ohms

From here, we need to decide a design architecture for the matching circuit. Since the real component of the impedance is greater than the source's (50 ohms, the standard for electrical sources), a natural design is a lowpass downward circuit. 

Next, we decide on a number of L networks to cascade in the circuit design, or how many 'rungs' in the ladder.

The purpose of these rungs is to artificially lower the ratio between the source impedance and the load impedance, as the closer these values, the broader the range of frequencies we can match.

The formula to calculate this is 

N = ln(Rl/Rs)/ln(1+Q^2)

where 

Q = ((Rl/Rs)-1)^½

Rs = real source impedance

Rl = real load impedance

For the given values, N is 14.

From here, we have all the information to find the capacitances and impedances for each L network in the ladder circuit.

The proccess of calciulating these values starts with finding the desired ratio between the impedances. 

ratio = Q^2+1

Which we can use to create a list of 13 impedances between the source and load (corresponding to 14 rungs), each Q^2+1 times larger than the last. Then we can use the formula for a single lowpass downward match between the impedances of each rung. 

All of this process is described in /users/PAS1960/dylanwells1629/improved_match_maker.py

The key functions PCSL, calcN, and broadbandMatchLP

 

 

 

  182   Fri Sep 2 12:40:17 2022 Alan SIce Shell Around Bicone

Here is a PDF with a summary/log of my work trying to integrate an ice shell surrounding the bicone antennas in the GENETIS loop. I made gain patterns of the ARA bicone with the ice shells and without them, showing the impact of the ice on the antenna's gain. Having an ice shell changes these patterns, which are also dependent on the radius of the shell. I showed that convergence on the gain patterns and expected features start ocurring for shells with radii larger than 10 meters. I also keep track of the computation time which increases with bigger shells.

Note: I also add PowerPoint slides that contain all the graphs that I made. The PDF does not contain some of those since I didn't think they were coherent with my write-up, but I may be making an omission. 

 

Attachment 1: XF_ARA_bicone_in_ice_and_air_column.pptx
Attachment 2: Far_Zone_Gain_of_ARA_Bicone_insice_Ice.pdf
  181   Thu Aug 18 13:03:47 2022 Dylan WellsComparing inputs and outputs between AraSim and IceMC

Comparing Inputs:

Frequency Lists:

Ara - 83.33MHz - 1066.70 MHz, step = 13.33MHz

IceMC - 200MHz - 1500MHz, step = 10MHz

Number of files read in:

Ara - 1

IceMC - 8

Formating of files:

Ara - Theta, Phi, Gain (dB, thetra), Gain (theta), Phase (theta) 

IceMc - Frequency, Gain (dB)  (Different files cover different thetas and phis)

File Type:

Ara - .txt

IceMC - no suffix (file with 2 columns of text)

 

Other notes for IceMC inputs:

IceMC reads in 8 different files for gain.

vv_0  hh_0  vh_0  hv_0  vv_el  vv_az  hh_el  hh_az

Found in ../anitaBuiltTool/components/icemc/data

vv_0 = gains for vertical polarization

hh_0 = gains for horizontal polarization

vh_0 = gains for v → h cross polarization

hv_0 = gains for h → v cross polarization

vv_el = v polarization, e angle

vv_az = v polarization, a angle

hh_el = h polarization, e angle

hh_az = h polarization a angle

for e angle and a angle  in 

       0. 0

  1. 5

  2. 10

  3. 20

  4. 30

  5. 45

  6. 90

(iterates 1 to 6)

 

Comparing Outputs:

IceMC - veff is in second column in veff+runName+.txt file (in the outputDirectory directory)

Ara - veff is at the bottom of the AraOut.txt file

  180   Thu Aug 18 10:32:17 2022 Amyreading about HPol antennas

Here are some reading materials about HPol antennas:

This paper discusses some initial HPol designs that were tested in a prototype station of ARA.  We went with the slotted cylinder design.  

Here you can see what the RNO-G experiment in Greenland has considered.

We can add other sources here as we find them.

  179   Tue Aug 16 11:41:07 2022 Dylan WellsInstructions for Running IceMC

Running IceMC:

 

Go into the directory ../anitaBuildTool/build/components/icemc/

And run the command

  • ./icemc -i {inputFile} -o {outputDirectory} -r {runNumber} -n {numberOfNeutrinos} -t {triggerThreshold} -e {energyExponent}

*May need to chmod -R 775 ../anitaBuildTool/comonents/icemc/ if you get a permissions error

 

inputFile:

Must be the full path to the file

Config files are found in ../anitaBuildTool/components/icemc

Ex: /users/PAS1960/dylanwells1629/anitaBuildTool/components/icemc/inputs.anita4.conf

Config files are found in ../anitaBuildTool/components/icemc

 

outputDirectory:

Will be made in ../anitaBuildTool/build/components/icemc/ by default, specify full path otherwise.

 

runNumber: 

The run number.

 

numberOfNeutrinos:

The number of neutrinos generated in the simulation. 

Can be found in inputs.conf

Default is 2,000,000.

#How many neutrinos to generate


 

triggerThreshold:

Threshold for each band for the trigger. 

Default is 2.3

#thresholds for each band- this is only for the frequency domain voltage trigger.  If using a different trigger scheme then keep these at the default values of 2.3 because the max among them is used for the chance in hell cuts

 

energyExponent:

The exponent of the energy for the neutrinos

Can be found in input.conf 

Default is 1020

# Select energy (just enter the exponent) or (30) for baseline ES&S (1) for E^-1 (2) for E^-2 (3) for E^-3 (4) for E^-4 (5) for ES&S flux with cosmological constant (6) for neutrino GZK flux from Iron nuclei (16-22)not using spectrum but just for a single energy (101-114)use all kinds of theoretical flux models

  178   Wed Aug 10 22:38:20 2022 Dylan WellsInstructions for Installing IceMC

Installing IceMC:

I: Getting anitaBuildTool

Clone the anitaBuildTool repository (https://github.com/anitaNeutrino/anitaBuildTool) to your user.

  • git clone https://github.com/anitaNeutrino/anitaBuildTool

 

II: Get the Anita.sh file onto your user.

 Either copy the file from /users/PAS1960/dylanwells1629/Anita.sh

  • cp /users/PAS1960/dylanwells1629/Anita.sh ~

or create a new file Anita.sh with the following code


# .bashrc

 

 

# Source global definitions

if [ -f /etc/bashrc ]; then

. /etc/bashrc

fi

 

#this modules were originally loading in both the env.sh, and bashrc_anita.sh files. This was redundant so it was added here, and removed from the others.                                          

 module load gnu/7.3.0

module load gnu

module load mvapich2

module load fftw3

#module load python/3.6-conda5.2

module load cmake

PATH=$PATH:$HOME/.local/bin:$home/bin

export PATH

export CC=`which gcc`

export CXX=`which g++`

 

 

export FFTWDIR=/fs/project/PAS0654/shared_software/fftw3/gnu/6.3/mvapich2/2.2/3.3.5

export ANITA_SOURCE_DIR=~/anitaBuildTool/

export ANITA_UTIL_INSTALL_DIR=~/anitaBuildTool/

export ICEMC_SRC_DIR=~/anitaBuildTool/components/icemc/

export ICEMC_BUILD_DIR=~/anitaBuildTool/build/components/icemc/

export DYLD_LIBRARY_PATH=${ICEMC_SRC_DIR}:${ICEMC_BUILD_DIR}:${DYLD_LIBRARY_PATH}

export ROOTSYS=/fs/project/PAS0654/shared_software/anita/owens_pitzer/build/root

 

# User specific aliases and functions

#This env.sh is for running the BiconeEvolution GENETIS software. This should only be un-commented if you are running GENETIS software. When you do this, comment out env.sh.                      

 

#source ~/new_root_setup.sh

 

source /fs/project/PAS0654/shared_software/anita/owens_pitzer/build/root/bin/thisroot.sh

 

#source /cvmfs/ara.opensciencegrid.org/trunk/centos7/setup.sh

#module load python/3.6-conda5.2

 

#BiconeGENETIS directory shortcut SHARED                                                                                                                                                           

alias GE='cd ../../../fs/project/PAS0654/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/'

 

#emacs Alias                                                                                                                                                                                       

alias emacs='emacs -nw'

 

#root alias                                                                                                                                                                                        

alias root='root -l'

 

 

#Alias                                                                                                                                                                                             

alias l="ls"

 

alias python='/cvmfs/ara.opensciencegrid.org/trunk/centos7/misc_build/bin/python3.9'


Then source the file

  • source Anita.sh

Note: You will need access to PAS0654 for this step or you will get a permissions error.

 

III: Running the build tool.

Go into the anitaBuildTool directory

  • cd anitaBuildTool

And run the building script

  • ./buildAnita.sh

 

Note: There will be an error if you source files for running Ara in your .bashrc

Comment these out and restart your terminal before running the build. (remember to source Anita.sh before running the build tool. You could also source Anita.sh in your .bashrc)

Error if you source files for running Ara:

CMake Error at components/libRootFftwWrapper/cmake_install.cmake:238 (file):

  file INSTALL cannot copy file

  "/users/PAS1960/dylanwells1629/anitaBuildTool/components/libRootFftwWrapper/include/AnalyticSignal.h"

  to

  "/cvmfs/ara.opensciencegrid.org/v2.0.0/centos7/ara_build/include/AnalyticSignal.h":

  Read-only file system.

Call Stack (most recent call first):


 

  177   Tue Aug 9 15:28:50 2022 Ryan DeboltHow many individuals to use in the GA.

One of our foundational questions tied to the optimization of the GA has been "How many individuals should we simulate". Up to now, our minds were made up for us by the speed of arasim being great enough that the time cost of simulating individuals was great enough that the improvements made from having more were not enough to justify the slowdown. However, with the upgrade to the faster, more recent version of arasim, I decided to re-examine this. This was also spurred on by the fact that the last time I ran this test we were testing GA performance by final generation metrics rather than by how many generations it took to reach a benchmark. So in one of my optimization tests, I tracked this data. 

 

To start, using the same run proportions, using a .5 chi-squared benchmark, the average time across all 89 run types used in this run was 25.4 generations for 50 individuals as compared to 8.3 generations running the same test for 100. Furthermore, the minimum number of generations for 50 individuals was 4.8 while using 100 individuals yielded 2.4. So on average running 100 individuals was about 3 times fast at reaching this benchmark than with 50. And when comparing the best result regardless of run type, 100 individuals was still 2 times quicker than the min for 50 individuals. Finally, the run that yielded an average of 2.4 generations for 100 individuals took an average of 29.2 generations with 50 individuals or roughly 12 times the generations. 

 

For the test we will discuss, we ran 89 different run types that all used 60% rank, 20% roulette, and 20% tournament selection respectively. These test had the following ranges:

6-18% of individuals through reproduction (steps of 3%)

64-88% of individuals through crossover (steps of 12%)

0-10% mutation rate (steps of 5%)

1-5% sigma on mutation (steps of 1%)

 

These tests also used our fitness scores with simulated error of .1 to imitate arasim's behavior and as such we used the chi-squared value to evaluate these scores as there is no error on those values. 

 

Comparing this same test with a tighter chi-squared benchmark of .25, we see similar results. On average 50 individuals took 37.1 generations to reach this point while 100 individuals took 16.0 generations. Similarly, the minimums amount of gens for 50 individuals was 15.4 while 100 individuals was 5. Finally, the corresponding run for the 5 generation min with 100 individuals took 41.8 generations with 50 individuals. These correspond to speed up's of 2.3, 3.08, and 8.36 respectively. 

 

This data implies that on average, independent of run type, we should expect to have to use 2-3 times fewer generations while running 100 individuals than we would running 50 individuals but we could see up to 8-12 times fewer generations to reach benchmarks. Another data set using a different set of selection methods was also tested for this and again yielded similar results, though overall the runs from the first batch were better across both 50 and 100 individuals and so those results are likely to be more indicative of the parameters we use in a true run. 

 

The data being examined in these results can be found here: https://docs.google.com/spreadsheets/d/1GlfnjQSO6VI8MuUGYTUcLkjwDZU98nyFFysgTTfVFOE/edit?usp=sharing  

  176   Tue Aug 9 11:36:24 2022 Ryan DeboltGA User guide (pdf)
Attachment 1: VPol_GA_User_guide.pdf
  175   Fri Aug 5 09:59:07 2022 Dennis CalderonUpdated Effective Volumes and Errors (Paper Run and Curved Sides)

Update to previous ELOG post for Effective Volumes and Errors for AraSim simulations for antennas from Paper_Run and Curved_Sides.

AraSim version compiled ~11/2021 and the (old) GENETIS version

 

Here are the column definitions:

  • The first column indicates the antenna being described. For example, XF_model_21_20 was the 20th individual in the 21st generation for the run discussed in the paper. Curved_side_1 was the best performing individual from the curved run done in February 2022. Curved_Side_1_Quad_Zero indicates the curved individual with its quadratic term set to 0. Curved_Side_1_Straightened indicates the curved individual with the quadratic term set to zero and the linear term modified so as to keep the outer radius the same as it originally was (that is, for Curved_Side_1).
  • The next three columns are the measurements for that individual.
    • The first one idicates the mean effective volume of the runs done for that individual. There were ~300 runs, each of 10,000 neutrinos.
    • The second column indicates the standard deviation of the mean (the previous column). This was measured by taking the standard deviation of the effective volumes (the line that says test Veff(ice) in the AraOut file) from all 300 runs (that is, Sigma(mean - x_i)/Sqrt(300)).
      • example of line:
        • Veff(ice) : 5.25337e+09 m3sr, 5.25337 km3sr
    • The final column indicates the average of the errors on the effective volume measurements from the AraOut files (the line that Veff(water eq.)) divided by Sqrt(300) for each of the 300 jobs (that is, Sigma(x_i/Sqrt(300))/300).
      • example of line:
        • And Veff(water eq.) error plus : 0.552722 and error minus : 0.552722
           

Note: Previously, the best curved individual (according to the run data) had been excluded (instead, we had the 2nd-6th best individuals). This has been corrected, with the order corrected. 

Also find attached a file called full_resimulate_DNA.csv . It contains the DNA for the top five curved individuals, the DNA for those same individuals with their quadratic term set to 0, and the DNA for those individuals with the quadratic term set to zero and the linear term modified to maintain the same outer radius as in the original run. 

Finally, the three images show the original best curved bicone (Curved_Side_1), the best curved bicone when its quadratic gene was set to 0 (Curved_Side_1_Quad_Zero), and the best curved bicone when its quadratic gene was set to 0 *and* its linear gene was changed to keep the same outer radius (Curved_Side_1_Straightened).

We have chosen XF_Model_23_08 to be the one actually built for testing. This was decided based on the data presented here. XF_Model_23_08 was the highest scoring individual in the paper run. Because the paper data was generated using the old version of AraSim, it was decided that using those results would make the most sense for which antenna to build. This would also mean that we can compare directly to the best individual in the paper. This individual was chosen over the curved sided inviduals because it has a higher fitness score, both when using the old version of AraSim and the new version.

Attachment 1: Effective_Volumes_Errors_2.pdf
Attachment 2: full_resimulate_DNA.csv
Hybrid of Roulette and Tournament -- Thanks to Cal Poly / Jordan Potter
Author was David Liu
Notable contributors: Julie Rolla, Hannah Hasan, and Adam Blenk
Done at The Ohio State University
Working on behalf of Dr. Amy Connolly
And the ANITA project
Revision date: 21 March 2018 1800 EST
0.08333,0.1,0.11667,0.13334,0.15001,0.16668,0.18335,0.20002,0.21669,0.23336,0.25003,0.2667,0.28337,0.30004,0.31671,0.33338,0.35005,0.36672,0.38339,0.40006,0.41673,0.4334,0.45007,0.46674,0.48341,0.50008,0.51675,0.53342,0.55009,0.56676,0.58343,0.6001,0.61677,0.63344,0.65011,0.66678,0.68345,0.70012,0.71679,0.73346,0.75013,0.7668,0.78347,0.80014,0.81681,0.83348,0.85015,0.86682,0.88349,0.90016,0.91683,0.9335,0.95017,0.96684,0.98351,1.00018,1.01685,1.03352,1.05019,1.06686
Matrices for this Generation:
6.31483,77.6017,0.00260615,-0.197494
3.97024,40.9244,-0.0103313,0.36119
2.32499,79.663,-0.00224948,0.192602
0.308809,39.6742,-0.0084247,0.40629
2.32499,75.9855,-0.00224948,0.192602
0.966617,42.4246,-0.0084247,0.40629
5.83731,79.663,-0.000594616,0.0106887
2.316,38.0641,0.00166678,0.0135261
4.66148,79.663,-0.000594616,0.00582814
1.75822,39.9608,-0.000356019,0.0167485
6.31483,77.6017,0.0,-0.197494
3.97024,40.9244,0.0,0.36119
2.32499,79.663,0.0,0.192602
0.308809,39.6742,0.0,0.40629
2.32499,75.9855,0.0,0.192602
0.966617,42.4246,0.0,0.40629
5.83731,79.663,0.0,0.0106887
2.316,38.0641,0.0,0.0135261
4.66148,79.663,0.0,0.00582814
1.75822,39.9608,0.0,0.0167485
6.31483,77.6017,0.0,0.00474767
3.97024,40.9244,0.0,-0.0616123
2.32499,79.663,0.0,0.0134017
0.308809,39.6742,0.0,0.0720468
2.32499,75.9855,0.0,0.0216741
0.966617,42.4246,0.0,0.0488755
5.83731,79.663,0.0,-0.03668019
2.316,38.0641,0.0,0.0769706
4.66148,79.663,0.0,-0.0415408
1.75822,39.9608,0.0,0.00252170

Attachment 3: original_best_curved.png
original_best_curved.png
Attachment 4: best_curved_quad_zero.png
best_curved_quad_zero.png
Attachment 5: best_curved_same_radii.png
best_curved_same_radii.png
  174   Fri Jul 15 18:33:20 2022 Alex MRun Details: 2022_07_15_Latest_Greatest

We have started a new run. Here is the directory: /fs/ess/PAS1960/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2022_07_15_Latest_Greatest

This run is a substantial overhaul. It is a curved run using the latest parameters from Ryan's optimization loop. Here is a list of important changes:

  1. The newest version of AraSim has been implemented.
  2. The minimum length has been decreased to 10 cm per side.
  3. The GA is recording the parents and operators used to generate individuals.
  4. The number of individuals has been increased to 100 per generation.
  5. The number of neutrinos per individual has been increased to 600k.

This run may take longer than previous runs due to the increased number of individuals. There may need to be modifications made to resolve or work around AraSim errors that delay the loop (due to the auto-resubmit function). Find the details of the run attached.

Attachment 1: run_details.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2022_07_15_Latest_Greatest'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100			## number of generations (after initial) to run through
NPOP=100				## number of individuals per generation; please keep this value below 99
Seeds=5			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=120000			## Number of Neutrinos Thrown in AraSim   
exp=18				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=1			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=12			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=76			## Number (not fraction!) of individuals formed through crossover
MUTATION=10			## Probability of mutation (divided by 100)
SIGMA=5				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=2			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=2			## Percent of individuals selected through tournament (divided by 10)
RANK=6				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

#####################################################################################################################################################
  173   Fri Jul 8 13:35:19 2022 Ryan DeboltMultigenerational Narrative draft 2

The second-best individual in this evolution was Bicone 22 from generation 40. This individual is, in fact, a fascinating case as we shall see. But to start the story of this individual we will go back to generation 38 in order to demonstrate some of the peculiarities. 

 

In generation 38 there were two bicones of no renown,  Bicone 11 and Bicone 17. Bicone 11 was a fairly average individual that was ranked 23rd with a fitness score of 4.72016. Its DNA was {*6.16084, ***79.663, 0.0015434, -0.107765} for side one , and {0.308809, 39.6742, -0.0084247, 0.40629} for side two. One day, by chance it met Bicone 17, another average bicone ranked 24th with a score of 4.71877 and DNA {**2.32499, 79.663, -0.00224948, 0.192602} for side one, and {0.308809, 39.6742, -0.0084247, 0.40629} for side two. These two individuals eventually became the parents of two antennas: Bicone 16 and Bicone 17 of generation 39.

 

Bicone 16 eventually grew to have been ranked 3rd in fitness score of 4.95323. It’s DNA ended up being a complete balance of its parents sharing side one with Bicone 38.11{2.32499, 79.663, -0.00224948, 0.192602} and side two with bicone 38.17 {0.308809, 39.6742, -0.0084247, 0.40629}. Bicone 16 was an individual with high aspirations and hoped to be reproduced. But alas, it was not meant to be. But bicone 16 came upon some amazing luck, it was selected with itself for crossover. This meant that bicone 16 was able to provide two identical surrogates to survive into the next generation. This is where this Bicone fulfilled its full potential. 

 

The twin bicones were named Bicone 22 and Bicone 23 in generation 40. Being clones, they shared all their DNA with Bicone 39.16. However, due to some circumstances, they had slightly different fitness scores. Bicone 23 managed a very respectable 5.0117 fitness score and was ranked 2nd in the generation. But not to be outdone Bicone 22 managed to score a 5.17014 and ended up being the second-best performing individual of all time. Being so successful, the two bicones ended up producing 8 children between the two groups.

 

Bicone 23 was the first to crossover and had 2 children with its partner Bicone 25 (4.64409). These were Bicones 4 and 5. Bicone 4 was ranked 39th with a fitness score of 4.60251 and still shared the DNA of its second side with its grandparent Bicone 38.17 as well as most of its first side with Bicone 38.11 {2.32499, 79.663, -0.00213879, 0.192602} {0.308809, 39.9608, -0.0084247, 0.40629}. Bicone 5 on the other hand, was ranked 14th with a fitness score of 4.80535 and it still shared a lot of DNA with its grandparents {6.16084,53.0851,-0.00224948,0.0534469} {0.966617,39.6742,-0.0084247,0.40629}.

 

Bicone 22 had 6 children of its own with various other Bicones. These were; With Bicone 8.40 (4.82423) Bicone 8, ranked 11th with a fitness Score of 4.81784 and DNA {2.32499, 75.9855, -0.00224948, 0.192602} {0.966617, 39.6742, -0.00320023, 0.213833}; Bicone 9, ranked 7th with a fitness score of 4.88966 and DNA {6.10508, 79.663, -0.000594616, 0.0351901} {0.308809, 42.4246, -0.0084247, 0.40629}; With Biocone 16.40 (5.01137) Bicone 12, ranked 12th with a fitness score of 4.81705 and DNA {6.42695, 75.9855, 0.0015434, -0.107765} {0.308809, 39.6742, -0.00320023, 0.213833}; Bicone 13, ranked 2nd with a fitness score of 5.0344 and DNA {2.32499, 79.663, -0.00224948, 0.192602} {0.966617, 42.4246, -0.0084247, 0.40629}; With Bicone 4.40 (4.66578) Bicone 34 ranked 3rd with a fitness score of 4.99864 and DNA {0.66148, 73.5522, -0.000594616, 0.00582814} {0.966617, 39.6742, -0.0084247, 0.40629}; and finally Bicone 35, ranked 22nd with fitness score 4.74955 and DNA {2.32499, 79.663, -0.00224948, 0.192602} {0.308809, 42.4246, -0.0084247, 0.40629}

 

Upon inspection of the children in generation 41, you will see that none of the children surpassed their parent individual with the highest fitness score. They do however tend to have fitness scores around or above their second parent's score. Therefore, it is likely that the children's lower fitness score is due to a mismatch of genes. If we look at the rainbow plots provided, we can see that the genes of the worst-performing child are not dissimilar to those of individuals that scored higher than 5. This would imply that the fitness score found could be due to variations in Arasim similar to those seen from individuals 16.39 to 22/23.40 despite them being identical. Though it also could be possible that the graphs do not have a fine enough display to be able to clearly tell some of the genes apart. 

*Gene originating from Bicone 38.11

**Gene originating from Bicone 38.17

***Gene originating from Bicone 38.11 and 38.17 that is shared between the two.

Amy: We want to nail things down in places where we still have hypotheses for what could have happened.  For example, "This would imply that the fitness score found could be due to variations in Arasim similar to those seen from individuals 16.39 to 22/23.40 despite them being identical. Though it also could be possible that the graphs do not have a fine enough display to be able to clearly tell some of the genes apart."  These two hypotheses can easily be distinguished by running with higher statistics and looking at the numbers rather than relying on the resolution of the display.

Amy: Also, at each stage, I was looking for the random numbers that were generated that led to the selection of the fractions of the population that were used for each type of selection and operator.  

 

 
 
Attachment 1: Rainbow_Plot_Quadratic_Rank_Test_5.png
Rainbow_Plot_Quadratic_Rank_Test_5.png
Attachment 2: Rainbow_Plot_Quadratic_Rank_Test_4.5.png
Rainbow_Plot_Quadratic_Rank_Test_4.5.png
Attachment 3: Rainbow_Plot_Quadratic_Rank_Test_4.png
Rainbow_Plot_Quadratic_Rank_Test_4.png
Attachment 4: Rainbow_Plot_Quadratic_Rank_Test_3.5.png
Rainbow_Plot_Quadratic_Rank_Test_3.5.png
  Draft   Fri Jul 8 13:34:08 2022 Ryan DeboltMultigenerational Narrative draft 2
  Draft   Thu Jun 30 13:04:48 2022 Ryan DeboltMultigenerational Narrative draft 2

This is a multigenerational tracing of our second-best individual's parents and children:

The second-best individual in this evolution was Bicone 22 from generation 40. This individual is, in fact, a fascinating case as we shall see. But to start the story of this individual we will go back to generation 38 in order to demonstrate some of the peculiarities. 

 

In generation 38 there were two bicones of no renown,  Bicone 11 and Bicone 17. Bicone 11 was a fairly average individual that was ranked 23rd with a fitness score of 4.72016. Its DNA was {*6.16084, ***79.663, 0.0015434, -0.107765} for side one , and {0.308809, 39.6742, -0.0084247, 0.40629} for side two. One day, by chance it met Bicone 17, another average bicone ranked 24th with a score of 4.71877 and DNA {**2.32499, 79.663, -0.00224948, 0.192602} for side one, and {0.308809, 39.6742, -0.0084247, 0.40629} for side two. These two individuals eventually became the parents of two antennas: Bicone 16 and Bicone 17 of generation 39.

 

Bicone 16 eventually grew to have been ranked 3rd in fitness score of 4.95323. It’s DNA ended up being a complete balance of its parents sharing side one with Bicone 38.11{2.32499, 79.663, -0.00224948, 0.192602} and side two with bicone 38.17 {0.308809, 39.6742, -0.0084247, 0.40629}. Bicone 16 was an individual with high aspirations and hoped to be reproduced. But alas, it was not meant to be. But bicone 16 came upon some amazing luck, it was selected with itself for crossover. This meant that bicone 16 was able to provide two identical surrogates to survive into the next generation. This is where this Bicone fulfilled its full potential. 

 

The twin bicones were named Bicone 22 and Bicone 23 in generation 40. Being clones, they shared all their DNA with Bicone 39.16. However, due to some circumstances, they had slightly different fitness scores. Bicone 23 managed a very respectable 5.0117 fitness score and was ranked 2nd in the generation. But not to be outdone Bicone 22 managed to score a 5.17014 and ended up being the second-best performing individual of all time. Being so successful, the two bicones ended up producing 8 children between the two groups.

 

Bicone 23 was the first to crossover and had 2 children with its partner. These were Bicones 4 and 5. Bicone 4 was ranked 39th with a fitness score of 4.60251 and still shared the DNA of its second side with its grandparent Bicone 38.17 as well as most of its first side with Bicone 38.11 {2.32499, 79.663, -0.00213879, 0.192602} {0.308809, 39.9608, -0.0084247, 0.40629}. Bicone 5 on the other hand, was ranked 14th with a fitness score of 4.80535 and it still shared a lot of DNA with its grandparents {6.16084,53.0851,-0.00224948,0.0534469} {0.966617,39.6742,-0.0084247,0.40629}.

 

Bicone 22 had 6 children of its own with various other Bicones. These were; Bicone 8, ranked 11th with a fitness Score of 4.81784 and DNA {2.32499, 75.9855, -0.00224948, 0.192602} {0.966617, 39.6742, -0.00320023, 0.213833}; Bicone 9, ranked 7th with a fitness score of 4.88966 and DNA {6.10508, 79.663, -0.000594616, 0.0351901} {0.308809, 42.4246, -0.0084247, 0.40629}; Bicone 12, ranked 12th with a fitness score of 4.81705 and DNA {6.42695, 75.9855, 0.0015434, -0.107765} {0.308809, 39.6742, -0.00320023, 0.213833}; Bicone 13, ranked 2nd with a fitness score of 5.0344 and DNA {2.32499, 79.663, -0.00224948, 0.192602} {0.966617, 42.4246, -0.0084247, 0.40629}; Bicone 34 ranked 3rd with a fitness score of 4.99864 and DNA {0.66148, 73.5522, -0.000594616, 0.00582814} {0.966617, 39.6742, -0.0084247, 0.40629}; and finally Bicone 35, ranked 22nd with fitness score 4.74955 and DNA {2.32499, 79.663, -0.00224948, 0.192602} {0.308809, 42.4246, -0.0084247, 0.40629}


Bellow, I have attached the rainbow plot with the parameters occupied by individual 4 in gen 41 which was again ranked 39th in that generation. From this, we can see that while in its own generation it was a poor performer, overall it was upper middle of the pack. However, because of the density of other better performing antennas in this region, it is hard to distinguish which genes in this antenna are contributing the most to the drop in fitness score compared to its siblings and parents. 


 

*Gene originating from Bicone 38.11

**Gene originating from Bicone 38.17

***Gene originating from Bicone 38.11 and 38.17 that is shared between the two.

Attachment 1: rainbow_plot_quadratic_rank_test_720_(drawn).png
rainbow_plot_quadratic_rank_test_720_(drawn).png
  170   Tue Jun 28 13:27:13 2022 Dylan WellsChanges needed for the matching circuit script
  1. Fix the functions for the SLPC, SCPL, and PLSC L networks (change the paramaters to match with the format of our data)

  2. Write the PCSL function

  3. Create a function to find the number of L networks necessary (N) given a source and load resistance as well as a frequency range.

  4. Write a function to broadband match two impedances given a source, load, central frequency, and N. (return a list of capacitances and inductances for the L networks)

  169   Tue Jun 28 12:49:53 2022 Dennis CalderonEffective Volumes from AraSim: Curved Sides and Straight Sides (Paper Run)

Summary of results for 3million event simulations in AraSim with both GENETIS version and more recent {~11/2021) version.

Using errors for effective volume from the .out files.

Example shown below.

Radius: 3000 [m]
IceVolume : 8.4823e+10
test Veff(ice) : 6.50867e+09 m3sr, 6.50867 km3sr
test Veff(water eq.) : 5.96845e+09 m3sr, 5.96845 km3sr
And Veff(water eq.) error plus : 0.543588 and error minus : 0.543588


 

Attachment 1: AraSim_Summary_Effective_Volumes.pdf
  168   Tue Jun 28 11:40:32 2022 Alex MRun Details: Machtay_20200911_Symmetric

This was a symmetric run that began on 9/11/2020. This run used fewer neutrinos to determine how significant the number would be on the performance of the evolution. 30,000 neutrinos were used per individual.

10 individuals were evolved over 35 generations, using 100% roulette selection and the old mutation algorithm, where genes had a 40% chance of mutating. Mutations changed the gene by reselecting the value from a guassian with a mean and sigma equalt to the mean and sigma of that gene's value in the generation.

 

Attachment 1: Fitness_Scores_RG.png
Fitness_Scores_RG.png
  167   Tue Jun 28 11:35:15 2022 Alex MRun Details: Machtay_20200831_Asym_Length_and_Angle

This run was conducted beginning on August 31, 2020.

Both the angle and length were asymmetric for the two cones. It was run with 10 individuals over 42 generations using 150,000 neutrinos. A penalty was still implemented on bicones exceeding the borehole width.

As this was before the substantial rewrite of the genetic algorithm, 100% of selection was done using roulette. Genes had a 40% chance to "mutate," which was done by selecting a new value from a guassian, with a mean and sigma equal to the mean and standard deviation of that gene's value in that generation.

 

Attachment 1: Fitness_Scores_RG.png
Fitness_Scores_RG.png
  166   Tue Jun 21 13:20:41 2022 Ryan DeboltMultigenerational Narrative draft

The story of individual 8 from generation 18. (draft)

 

Once, there was a curved bicone named individual 8 who was from generation 18. In many ways, it was similar to many other bicones but in fact, this individual was the best bicone that ever lived with a fitness score of 5.22097. It achieved this by having the following parameters; an inner radius of 6.31483, and 3.97024; lengths of  77.6017 and 40.9244; quadratic coefficients of, 0.00260615 and, -0.0103313; and finally, a linear coefficient of -0.197494 and

0.36119. Unfortunately, individual 8’s lineage ended with it as it never met that special someone (crossover) and didn't survive into the next generation (reproduction) despite having a 77.7% of doing at least one of these. 

 

This bicone had a sibling with a fitness Score of 4.65861 and had the following parameters: 6.05614,79.663,-0.000353038,0.0331969 (side 1)

1.92878,37.9849,-0.00213265,0.156724  (side 2).

Unfortunately, this bicone also suffered the same fate as its sibling and failed to leave a lasting mark on this hypothetical world. 

 

These two individuals had parents from generation 17 whose name’s were individuals 39 and individual 8. After having individuals 8 and 9 in generation 18, individuals 39 and 8 from generation had a nasty divorce (possibly leading to 8 and 9’s aversion to marriage) and remarried. In these marriages, they both produced two more children that would be our previous antenna’s step-siblings. 

 

Antenna 8 from gen 17 married antenna 46 to produce antenna 20 with a fitness score of 4.57122,  and antenna 21 with a fitness score of 4.71056. Individual 20 shared the same genes for the second set of linear and quadratic coefficients as its more successful step-sibling individual 8. 21 had no similarities to individual 8 but had 4 children in generation 19. 

 

Antenna 39 from gen 17 married antenna 5 to produce antenna 28 with a fitness score of 4.71808 and antenna 29 with a fitness score of 4.90119. Antenna 28 shared had an identical side 1 to individual 8 and also shared the same inner radius and length on the second side, and had 2 children in generation 19. Individual 29 had no similarities to individual 8 but really got around and had 8 children with various partners in generation 19. 

  165   Tue Jun 21 12:22:02 2022 Alex MRun Details: Machtay_20200827_Asym_Length_Run

This run followed the first symmetric run. It had an asymmetric length, but the opening angle and inner radius were kept symmetric. 

10 individuals were evolved over 17 generations using 100,000 neutrinos. All selection was done through roulette, and all individuals were formed through crossover and the old mutation method (where individual genes had a 40% to be mutated, and mutated genes were chosen from a gaussian based on the mean and standard deviation of that gene's value in the generation).

Attachment 1: Veffectives_RG.png
Veffectives_RG.png
Attachment 2: Fitness_Scores_RG.png
Fitness_Scores_RG.png
  164   Tue Jun 21 12:15:18 2022 Alex MRun Details: Machtay_20200824_Real_Run

This is considered to be the first run of "good" data. Prior to this run, we ran with few neutrinos and had errors which needed to be resolved in AraSim and with the way we handled XFdtd's simulation results being passed to AraSim. Those were resolved in the summer before this run.

This was a symmetric run of 10 individuals over 15 generations using 100,000 neutrinos per individual. This preceded the substantial modifications made by Ryan to the GA. All individuals were formed through crossover, but there was a probability of 40% for genes to be mutated. In this case, mutation was a complete change to the gene, though it was based on the average value of that gene in the generation. There was no reproduction or mutation. All individuals were selected through roulette.

Green individuals indicate that there was no penalty applied, while red individuals had a penalty factor multiplied by their effective volumes. The penalty was of the form exp(-(R-7.5)^2), where R is the outer radius, in cm, of the bicone.

Attachment 1: Fitness_Scores_RG.png
Fitness_Scores_RG.png
Attachment 2: Veffectives_RG.png
Veffectives_RG.png
  163   Tue Jun 21 12:02:23 2022 Alex MRun Details: Machtay_20201023_300K_Nus_50_Individuals

This run was started on 10/23/2020. The purpose was to attempt to demonstrate evolution by beginning from 50 identical individuals in the initial generation (which had previously produced a low score).

This run was the first time we removed the penalty on fitness scores for antennas which exceeded the borehole radius. It was also the first time we increased the number of neutrinos thrown up to 300,000. 50 fully asymmetric individuals were evolved over 25 generations.

There was a 50/50 split for roulette/tournament selection and 75%/10%/15% for crossover/reproduction/immigration. While the evolution was somewhat flat, we do believe we demonstrated evolution because the average score rose as the run evolved. 

(Note that the final generation was interrupted but the plot was still made, hence the drop to 0 for all scores on the plot)

Attachment 1: Fitness_Scores_RG.png
Fitness_Scores_RG.png
  162   Wed Jun 8 14:45:52 2022 Alan SXF Simulations | ARA bicone in ice | PowerPoint Slides

Beam patterns with ARA bicone contained in a cylinder of air surrounded by a shell of ice.

 

Attachment 1: XF_ARA_bicone_in_ice_and_air_column.pptx
  161   Tue Jun 7 14:14:21 2022 Dylan WellsMatching Circuits Slides

Slides contatining my notes on matching circuits.

https://docs.google.com/presentation/d/1x25nhiqaW7LvPZ1pNZ5O4ZzsWZbtgqxBQ5haB9uWgQY/edit?usp=sharing

  160   Tue Jun 7 12:20:23 2022 Alex MRun Details: 2022_04_14_Identical_Asym_Lower_Min

This run was a short run (stopped due to resource limits) that was conducted to test the minimum length constraint that had been applied in the past. Previously, the minimum length was set to be 37.5 cm for each cone; in this run, it was lowered to 10 cm. It ran for 60 generations with 50 individuals per generation, each evaluated with 300,000 neutrinos. To compare to the paper run, this run was performed using the asymmetric algorithm, meaning each individual had 6 genes (length, inner radius, and opening angle for each cone). The initial generation began with identical individuals, with genes matching the genes of the best performing individual mentioned in the GENETIS paper.

The ratio of generative operators is as follows: 72% crossover, 22% immigration, 6% reproduction. Mutation was also used, with 1% of genes produced by crossover mutated by adding a number chosen from a Gaussian centered at 0 with a width of 5% of the gene's value.

The ratio of selection operators was: 20% roulette, 80% tournament, 0% rank, 0% elite.

Attached are the run details, violin plot, and "rainbow" plot.

Attachment 1: run_details.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2022_04_14_Identical_Asym_Lower_Min'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100			## number of generations (after initial) to run through
NPOP=50				## number of individuals per generation; please keep this value below 99
Seeds=10			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=30000			## Number of Neutrinos Thrown in AraSim   
exp=18				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=0			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=3			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=36			## Number (not fraction!) of individuals formed through crossover
MUTATION=1			## Probability of mutation (divided by 100)
SIGMA=5				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=2			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=8			## Percent of individuals selected through tournament (divided by 10)
RANK=0				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

#####################################################################################################################################################
Attachment 2: Violin_Plot.png
Violin_Plot.png
Attachment 3: 2022_04_14_Identical_Asym_Lower_Min_Rainbow.png
2022_04_14_Identical_Asym_Lower_Min_Rainbow.png
  159   Tue Jun 7 11:29:48 2022 Alex MRun Details: AraSim_Polarity_Fix_2021_03_19

This is the run that is discussed in the GENETIS paper submitted to Physical Review D in December of 2021. It was conducted beginning on March 19, 2021. The preprint can be found here. It ran for 31 generations with 50 individuals per generation. Each individual was run through AraSim for 300,000 neutrinos.

The ratio of generative operators was: 72% crossover, 22% immigration, 6% reproduction. 

The ratio of selection operators was: 80% roulette, 20% tournament, 0% rank.

The highest scoring individual had a fitness score of 5.24. However, when it was rerun with many more neutrinos (3*10^7), it had a score of 4.90, an 11% improvement over the ARA bicone.

This run was conducted before the introduction of the automatic run_details.txt generator. Instead, there is a file called Run_Notes.txt (attached) which details some of the errors that were encountered. These errors were remedied during runs by removing the offending AraOut file (which had too high of a fitness score due to a weight being calculated to be greater than 1, which shouldn't be possible) and have since been prevented by modifying the data file AraSim uses to calculate the weights.

Attachment 1: Run_Notes.txt
//Notes for AraSim_Polarity_Fix_2020_03_19 run

3/27/21: We ran into a rare error we see where AraSim gives an absurd weight (>>1) to a passed event. We reverted the state and replaced the effective volume in that file (AraOut_6_3_8.txt) with the average from the other AraOut files for that individual. DO NOT USE AraOut_6_3_8.txt WHEN ANALYZING ARASIM DATA.

5/9/21: We ran into the same error as above. We reverted the state and replaced the effective volume in the file (AraOut_23_7_7.txt). DO NOT USE AraOut_23_7_7.txt WHEN ANALYZING ARASIM DATA.

5/11/21: We ran into the same error. We are reverting the state and replacing the file (AraOut_25_10_6.txt). DO NOT USE AraOut_25_10_6.txt WHEN ANALYZING ARASIM DATA.
Attachment 2: Violin_Plot_super_big.png
Violin_Plot_super_big.png
  158   Tue Jun 7 11:01:59 2022 Alex MRun Details: 2022_02_08_Rank_Test

This run was started on February 2, 2022. It is a full run of 50 generations with 50 individuals per generation using the quadratic version of the loop. This means that each individual is defined by 8 genes (length, inner radius, linear coefficient, and quadratic coefficient for each cone). Attached is the txt file run_details.txt that is automatically generated when the loop is run. Each individual was run for 300,000 neutrinos.

This run used the usual ratio of generative operators: 72% crossover, 22% immigration, and 6% reproduction. It also used the proper mutation function: 1% of genes created through crossover were mutated by adding a number chosen from a Gaussian distribution centered at 0 with a width of 5% of the gene's value (MUTATION WAS NOT USED BUT WAS AVAILABLE).

This run was the first full run in which the rank selection operator was used. The ratio of selection operators was: 0% roulette, 10% tournament, 90% rank, 0% elite. 

This run used the script fitness_check.py to average the scores of identical individuals that appeared across multiple generations. This gives us a more accurate measure of those individuals' scores. It may also explain why this run appears so flat (on the violin plot): fluctuations in the scores should die down as repeated individuals have more accurate scores, and newly generated individuals that perform highly regress to their mean (actual) score when they are reproduced/recreated through crossover. This has led us to question our GA parameters, as Audrey and Autumn demonstrated that roughly 1/4 individuals in the run are repeat individuals.

Attachment 1: run_details.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2022_02_08_Rank_Test'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100			## number of generations (after initial) to run through
NPOP=50				## number of individuals per generation; please keep this value below 99
Seeds=10			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=30000			## Number of Neutrinos Thrown in AraSim   
exp=18				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=1			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=3			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=36			## Number (not fraction!) of individuals formed through crossover
MUTATION=1			## Probability of mutation (divided by 100)
SIGMA=5				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=0			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=1			## Percent of individuals selected through tournament (divided by 10)
RANK=9				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

#####################################################################################################################################################
Attachment 2: Violin_Plot.png
Violin_Plot.png
  157   Mon Jun 6 14:19:59 2022 Alex MImportant Runs (2)

This is a duplicate post of a previous post from the end of 2020 where I listed the important runs with some of their details in a table (as below). I am extending this table to include the important runs that have been conducted since this post. This includes the run used for the paper as well as the curved run done earlier this year.

In order to access the data for these runs, you can find them by going to this directory: /fs/ess/PAS1960/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs

Some of these runs can also be accessed in the old project space directory, though they should all be contained in the above directory. Here's the path if interested: 

The runs are contained in directories available in the above path. Use caution when listing files in some of these directories--some contain many files (primarily the .uan files -- more recent runs are better organized), which means it may take a long time to list files/directories.

Name Description Symmetry NPOP Generations Roulette/Tourney/Rank Crossover Reproduction  Mutation Injection  Penalty Neutrinos  
Machtay_20200824_Real_Run

First real run with significant amounts of data after the summer improvements.______________________________________

Symmetric 10 15 100% Roulette 100% 0% - 100% Yes 100k  
Machtay_20200827_Asym_Length_Run First asymmetric length run after summer improvements. Asymmetric length 10 17 100% Roulette 100% 0% - 100% Yes 100k  
Machtay_20200831_Asym_Length_and_Angle Asymmetric length and angle run after summer improvements. Asymmetric length and angle 10 42 100% Roulette 100% 0% - 100% Yes 150k  
Machtay_20200911_Symmetric Longer symmetric run with fewer neutrinos. Symmetric 10 35 100% Roulette 100% 0% - 100% Yes 30k  
Machtay_20200914_Asymmetric_50_Individuals Longer asymmetric run with fewer neutrinos. Asymmetric (all dimensions) 50 26 100% Roulette 100% 0% - 100% Yes 30k  
Machtay_20201016_Symmetric_Improved_GA First run using improvements to GA based on Ryan's paperclip/fast loop analysis. Symmetric 50 10 50/50/0 75% 10% - 15% Yes 30k  
Machtay_20201023_300K_Nus_50_Individuals Started with all identical individuals to demonstrate evolution; replaced penalty with hard cutoff. Increased Nus for higher fitness score precision. Asymmetric (all dimensions 50 25 50/50/0 75% 10% - 15% No 300k  
AraSim_Polarity_Fix_2021_03_19 Run used in the paper. In this run, we fixed an error that had been noticed by Brian and Jorge in AraSim. The error involved the polarity of the signals in Report.cc (hence the name of this run).  Asymmetric(all dimensions) 50 31 80/20/0 72% 6% - 22% No 300k  
2022_02_08_Rank_Test

This was the first long run done using a new gene for the curvature of the cones. We recast the side lengths to be described by the coefficients of a quadratic polynomial, rather than by the opening angle. This also used rank selection instead of roulette.

Additionally, mutation has been changed here so as to apply small perturbations to existing genes rather than regenerating those genes altogether. This only applies to individuals created by crossover. The mutation column indicates the probability of mutating a gene and the standard deviation of the gaussian that determines the change (in terms of % of the original value).

Asymmetric, Quadratic 50 50 0/90/10 72% 6% 1%, 5% 22% No 300k  
2022_04_14_Identical_Asym_Lower_Min This run used the asymmetric GA to see if by lowering the minimum length (down to 10 cm instead of 37.5) the GA would try to run away to ever smaller lengths.  Asymmetric 50 6 2/8/0 72% 6% - 22% No 300k  

 

 

  155   Fri May 20 17:17:32 2022 Ryan DeboltFitness Functions Test

Bellow lies plots testing different scores and comparing them using a chi^2 score.

The functions used are as follows

Gaussian: e^(-2) (Red)

 

Inverse: 1/(1+(O-E)^2) (Purple)

 

Algebraic: 1/(1+(chi^2) )^(3/2)) (Green)

 

Chi: 1/(1+chi^2) (Blue)

Which are plotted here:

Attachment 1: Alg_Chi.png
Alg_Chi.png
Attachment 2: Alg_fitness.png
Alg_fitness.png
Attachment 3: inv_Chi_Fitness.png
inv_Chi_Fitness.png
Attachment 4: Inv_Chi_Chi.png
Inv_Chi_Chi.png
Attachment 5: Gauss_Chi.png
Gauss_Chi.png
Attachment 6: Gauss_Fitness.png
Gauss_Fitness.png
Attachment 7: Inv_Chi.png
Inv_Chi.png
Attachment 8: Inv_Fitness.png
Inv_Fitness.png
  154   Fri May 20 14:26:39 2022 Alex MGA Papers

I'm making this entry so that I can record some interesting papers we find on genetic algorithms. Feel free to update this list with links to papers and maybe make a description of what was interesting/of note in the paper.
 

Global Optimization of Copper Clusters at the ZnO(10¯10) Surface Using a DFT-based Neural Network Potential and Genetic Algorithms Turns out that GAs might be used pretty commonly in physical chemistry. Section II.B is interesting for the different operations they list.
   
   
   
   
   
   
   
   
   

 

  153   Tue Apr 19 17:46:07 2022 Aidan SnyderAREA - Short run testing stringReplacement2.py - 04/19/2022
  • Run Type
    • AREA
  • Run Date
    • 04/19/22
  • Run Name
    • 20220419fahimi5run1
  • Why are we doing this run?
    • Check to see if stringReplacement2.py changes were successfull
  • What is different about this run from the last?
    • added below code in order to create a fitness file inside of each generation to display the fitness scores for just that generation, as opposed to just having one big file full of all the generations.
      f2 = open(source + "/" + "gen_{}".format(gen) + "/fitnessFile_gen_{}".format(gen) + ".txt", 'a')
      f2.write(','.join(mean_Veff_array) + "\n")
      f2.close()
  • Symmetric, asymmetric, linear, nonlinear?
    • N/A (AREA run)
  • Number of individuals (NPOP)
    • 12 individuals
  • Operators / Selection methods used (% of each)
    • roulette crossover 50%
    • roulette mutation 16%
    • tournament crossover 18%
    • tournament mutation 16%
  • Are we using the database?
    • N/A (AREA run)
  152   Fri Apr 8 16:07:22 2022 Alex MIdentical Asymmetric Lowered Length Minimum Run

We are trying to do a short run of the asymmetric bicone so that we can see how it tries to evolve the antenna when the minimum length is lowered from 37.5 cm to 10 cm. Currently, there is a problem with the loop in the asymmetric version. Attached is the run detail file.

Attachment 1: run_details.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2022_04_07_Identical_Asym'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100			## number of generations (after initial) to run through
NPOP=50				## number of individuals per generation; please keep this value below 99
Seeds=10			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=30000			## Number of Neutrinos Thrown in AraSim   
exp=18				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=0			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=3			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=36			## Number (not fraction!) of individuals formed through crossover
MUTATION=1			## Probability of mutation (divided by 100)
SIGMA=5				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=2			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=8			## Percent of individuals selected through tournament (divided by 10)
RANK=0				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

#####################################################################################################################################################
  151   Fri Apr 8 16:06:31 2022 Aidan SnyderAREA - frequency linear dependence correlation test run - 04/05/2022
  • Run Type
    • AREA
  • Run Date
    • 04/05/2022
  • Run Name
    • 20220405fahimi5run2
  • Why are we doing this run?
    • to see if the linear dependence on frequency was properly implemented
  • What is different about this run from the last?
    • Under closer examination, the previous run of AREA appeared to not linearly depend on frequency, so we recompiled the GA in order to fix this
  • Symmetric, asymmetric, linear, nonlinear?
    • N/A (AREA run)
  • Number of individuals (NPOP)
    • 50 individuals
  • Number of neutrinos
    • 10,000 per seed
      • 4 seeds per individual
  • Operators / Selection methods used (% of each)
    • roulette crossover 50%
    • roulette mutation 16%
    • tournament crossover 18%
    • tournament mutation 16%
  • Are we using the database?
    • N/A (AREA run)
  • Result
    • There is a problem with how the GA has assigned the Veff values, resulting in many individuals being assigned zero Veff, however the linear dependence seems to have been implemented successfully

Note: We also ran a run called 20220405fahimi5run1, which was a short test run with a very low amount of individuals and neutrinos which seemed to work fine; as in the linear dependence seemed to work.

  150   Fri Apr 1 16:35:50 2022 Ryan DeboltPopulation test.

https://docs.google.com/spreadsheets/d/1vvcmjByKfcns0-tbAjtePB8ZVGsXAKxXCfbMc99weMI/edit?usp=sharing Here is the spreadsheet link for the population test. 

  149   Fri Mar 25 17:32:25 2022 Alex MXFdtd Step Size Investigation

The reviewer for the paper we recently submitted mentioned that our step sizes at which we are measuring the gain in XFdtd may be too large. They pointed out that there appear to be "lobes" at 400 MHz. I ran the antenna we presented in the paper through XFdtd using a step size of 5 degrees (what we've been doing) and a step size of 1 degree (the reveiwer's recommendation). Attached are antenna responses for these two different step sizes at 200 MHz and 400 MHz. Qualitatively, there are noticeable differences in the "jaggedness" of the 400 MHz plot and how extreme the minima and maxima appear, but the basic shape is preserved. We can try to do a more quantitative analysis (ex: run these through AraSim), but doing so may be more time intensive than necessary considering that AraSim may require 5 degree steps and that adding these images to an appendix may be sufficient anyway.

Attachment 1: polar_plot_400.06_step_5.png
polar_plot_400.06_step_5.png
Attachment 2: polar_plot_400.06_step_1.png
polar_plot_400.06_step_1.png
Attachment 3: polar_plot_200.02_step_5.png
polar_plot_200.02_step_5.png
Attachment 4: polar_plot_200.02_step_1.png
polar_plot_200.02_step_1.png
  148   Fri Mar 25 17:14:01 2022 Alex MAntenna Minimum Length Investigation

The reviewer of the paper we are trying to publish (as well as other external colleagues we showed the paper to) asked about our minimum length we implemented in the loop. Currently, we cut off the length at a minimum of 37.5 cm for each cone (minimum of 75 cm for the full cone). There is an ELOG post from Amy that presented the reasoning for this ( http://radiorm.physics.ohio-state.edu/elog/GENETIS/81 ). We initially thought that we needed a minimum because the antennas were evolving to be small (around and lower than the minimum). We thought that XFdtd was being inaccurate at lengths lower than 37.5 cm, so we set that as a minimum. To see if we can replicate any strange behavior from XFdtd, I simulated antennas at and below our minimum length and generated plots of their antennas responses. The genes are listed below, corresponding to the patterns in the plot. The results do not look unusual (that is, not dissimilar to the other bicones we have generated, including the ARA bicone) and seem to show an improved sensitivity in the upward direction for shorter bicones. The equation we used to arrive at this minimum (f = c/(4L)) might be indicative of a maximum length rather than a minimum.

 

Inner radius Length Quadratic Linear

2.4892,37.5,-0.00142604,0.032832
4.64522,37.5,0.00153863,-0.14004
2.4892,34.5,-0.00142604,0.032832
4.64522,34.5,0.00153863,-0.14004
2.4892,31.5,-0.00142604,0.032832
4.64522,31.5,0.00153863,-0.14004
2.4892,27.5,-0.00142604,0.032832
4.64522,27.5,0.00153863,-0.14004
2.4892,23.5,-0.00142604,0.032832
4.64522,23.5,0.00153863,-0.14004
2.4892,19.5,-0.00142604,0.032832
4.64522,19.5,0.00153863,-0.14004
2.4892,15.5,-0.00142604,0.032832
4.64522,15.5,0.00153863,-0.14004
 

Attachment 1: polar_plot_283.37.png
polar_plot_283.37.png
  147   Thu Feb 24 20:08:46 2022 Ryan DeboltParents
Attachment 1: Parent_tracking_example.pdf
  146   Fri Feb 11 16:34:54 2022 Aidan SnyderAREA - frequency linear dependence correlation test run - 01/18/2022
  • Run Type
    • AREA
  • Run Date
    • 01/18/22
  • Run Name
    • 20220118fahimi5run1
  • Why are we doing this run?
    • to see if the linear dependence on frequency was properly implemented
  • What is different about this run from the last?
    • attempted to evolve gain pattern as a linear function of frequency
  • Symmetric, asymmetric, linear, nonlinear?
    • N/A (AREA run)
  • Number of individuals (NPOP)
    • 50 individuals
  • Operators / Selection methods used (% of each)
    • roulette crossover 50%
    • roulette mutation 16%
    • tournament crossover 18%
    • tournament mutation 16%
  • Are we using the database?
    • N/A (AREA run)
Attachment 1: Screenshot_2022-02-11_164514.png
Screenshot_2022-02-11_164514.png
Attachment 2: Screenshot_2022-02-11_164136.png
Screenshot_2022-02-11_164136.png
Attachment 3: Screenshot_2022-02-11_164252.png
Screenshot_2022-02-11_164252.png
Attachment 4: Screenshot_2022-02-11_164406.png
Screenshot_2022-02-11_164406.png
  145   Fri Feb 11 16:09:24 2022 Ryan DeboltParents.csv

Below is an example of our Parents.csv file written by the GA. This file tracks the parents of the individuals of the current generation. The columns and their contained information are as follows:

 

Current Gen: 

The numbered individual of the current generation.

 

Parent 1:

The number of the first parent of this individual as read from the previous generation.

 

Parent 2:

The number of the first parent of this individual as read from the previous generation.

 

Operator:

The genetic operator that created the individual in that row. 

Attachment 1: Parents.csv
Location of individuals used to make this generation:


Current Gen, Parent 1, Parent 2, Operator
1, 15, NA , Reproduction
2, 22, NA , Reproduction
3, 35, NA , Reproduction
4, 34, 39, Crossover
5, 34, 39, Crossover
6, 35, 29, Crossover
7, 35, 29, Crossover
8, 37, 5, Crossover
9, 37, 5, Crossover
10, 28, 12, Crossover
11, 28, 12, Crossover
12, 5, 22, Crossover
13, 5, 22, Crossover
14, 18, 23, Crossover
15, 18, 23, Crossover
16, 3, 33, Crossover
17, 3, 33, Crossover
18, 28, 14, Crossover
19, 28, 14, Crossover
20, 2, 17, Crossover
21, 2, 17, Crossover
22, 23, 22, Crossover
23, 23, 22, Crossover
24, 13, 15, Crossover
25, 13, 15, Crossover
26, 31, 35, Crossover
27, 31, 35, Crossover
28, 42, 13, Crossover
29, 42, 13, Crossover
30, 17, 6, Crossover
31, 17, 6, Crossover
32, 1, 5, Crossover
33, 1, 5, Crossover
34, 29, 38, Crossover
35, 29, 38, Crossover
36, 19, 10, Crossover
37, 19, 10, Crossover
38, 9, 38, Crossover
39, 9, 38, Crossover
40, NA, NA, Immigration
41, NA, NA, Immigration
42, NA, NA, Immigration
43, NA, NA, Immigration
44, NA, NA, Immigration
45, NA, NA, Immigration
46, NA, NA, Immigration
47, NA, NA, Immigration
48, NA, NA, Immigration
49, NA, NA, Immigration
50, NA, NA, Immigration
  144   Tue Feb 8 15:56:42 2022 MachtayRank Test Run

I fixed a bug in the loop, so we started another rank test run. Run details in the attached file.

The bug was searching for the generationDNA.csv file in the wrong place, meaning that it wasn't able to copy it to the run directory. That meant we didn't have a record of the generation data in the usual format. I don't think that this explains the flatness, since the the generationDNA.csv file was still created every generation correctly, so the GA knew where it was. But this test now corrects that problem and tests the usage of the rank selection method.

Attachment 1: run_details.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2022_02_08_Rank_Test'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100			## number of generations (after initial) to run through
NPOP=50				## number of individuals per generation; please keep this value below 99
Seeds=10			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=30000			## Number of Neutrinos Thrown in AraSim   
exp=18				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=1			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=3			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=36			## Number (not fraction!) of individuals formed through crossover
MUTATION=1			## Probability of mutation (divided by 100)
SIGMA=5				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=0			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=1			## Percent of individuals selected through tournament (divided by 10)
RANK=9				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

#####################################################################################################################################################
  143   Fri Feb 4 17:59:41 2022 Ryan DeboltGA Updates

The following plots are ittereations if the test loop that add increasing improvements to the GA.

The first plot shows the GA's behavoir unaltered from our previous runs (80% roulette, 20% tournament elite selection on).

The second plots shows when we use 90% rank selection and 10% tournament, elite selection off.

Plot 3 shows when we add an offset to restrict the values of the fitness function to be more within the range of the main loop.

Plot 4 shows when we add a gaussean mutation function that is applied to crossover individuals (rate and gaussean width chosen by guess).

 

The following are papers I have looked at while modifing the GA (not nessisaraly recently).

https://pdfs.semanticscholar.org/5733/418cbf21dedc9e5c04351ded4a989f1ff67e.pd

https://www.sciencedirect.com/science/article/abs/pii/0165607493902157

https://www.scientific.net/AMM.340.727 

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.28.1400&rep=rep1&type=pdf

https://arxiv.org/pdf/2010.04340.pdf

https://d1wqtxts1xzle7.cloudfront.net/30694440/10.1.1.34.9722.pdf?1361979690=&response-content-disposition=inline%3B+filename%3DUsing_genetic_algorithms_with_asexual_tr.pdf&Expires=1612908683&Signature=X93Gsc47AS0xqWf1SPLjG~7sNkoXSOXfnq1GpZ2QaPrYw9x9mWwASStW2IWexo7QBzbkhzcE5tZ~CmQA1MHN-paiNFIx2ed8VNS3IhesMnotKM0mSgUZ37BCleHT9BgGkUUum8mTJBAzCUaECn6RYjm1CZpfwVPC9zwuA~DnXBST4pGlQdna22D--sHwXgX~3U3gDUSxqk8mLI0gtn~Xued3XqsTGuMUKwJ2D9UpD5yp42-3IrH6d5CZREjEfXY2geTopQ-uNkr3eOriDj0UZqSrDw5mczmod3kQrQncgd~G2Kyda4RlIs8VDzQs~BGgszHJhSDAuKDrXr8P--9tVg__&Key-Pair-Id=APKAJLOHF5GGSLRBV4ZA

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.438.7389&rep=rep1&type=pdf

https://arxiv.org/pdf/2102.01211.pdf

Attachment 1: Original_Params.PNG
Original_Params.PNG
Attachment 2: Rank_params.PNG
Rank_params.PNG
Attachment 3: Range_restriction.PNG
Range_restriction.PNG
Attachment 4: Mutation.PNG
Mutation.PNG
  142   Fri Feb 4 16:50:09 2022 Ryan DeboltLoop Run
  • Run Type
    • Main Arasim Loop
  • Run Date
    • 02/04/2022
  • Run Name
    • 2022_02_04_Rank
  • Why are we doing this run?
    • To test rank selection in main loop
  • What is different about this run from the last?
    • Rank Slection is being used.
    • Parents.csv introduced.
    • Elite is being turned off.
  • Symmetric, asymmetric, linear, nonlinear (what order):
    • Non-linnear asymetric
  • Number of individuals (NPOP):
    • 50 individuals
  • Number of neutrinos thrown in AraSim (NNT):
    • 300,000
  • Operatiors used (% of each):
    • 06% Reproduction
    • 72% Crossver
    • 22% Immigration
    • 1% M_rate (unused)
    • 5% sigma (unused)
  • Selection methods used (% of each):
    • 0% Elite
    • 0% Reproduction
    • 10% Tournament
    • 90% Rank
  • Are we using the database?
    • No.

Directory: /fs/ess/PAS1960/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/2022_02_04_Rank

Attachment 1: run_details.txt
####### VARIABLES: LINES TO CHECK OVER WHEN STARTING A NEW RUN ###############################################################################################
RunName='2022_02_04_Rank'	## This is the name of the run. You need to make a unique name each time you run.
TotalGens=100			## number of generations (after initial) to run through
NPOP=50				## number of individuals per generation; please keep this value below 99
Seeds=10			## This is how many AraSim jobs will run for each individual## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
FREQ=60				## the number frequencies being iterated over in XF (Currectly only affects the output.xmacro loop)
NNT=30000			## Number of Neutrinos Thrown in AraSim   
exp=18				## exponent of the energy for the neutrinos in AraSim
ScaleFactor=1.0			## ScaleFactor used when punishing fitness scores of antennae larger than the drilling holes
GeoFactor=1			## This is the number by which we are scaling DOWN our antennas. This is passed to many files
num_keys=4			## how many XF keys we are letting this run use
database_flag=0			## 0 if not using the database, 1 if using the database
				## These next 3 define the symmetry of the cones.
RADIUS=1			## If 1, radius is asymmetric. If 0, radius is symmetric		
LENGTH=1			## If 1, length is asymmetric. If 0, length is symmetric
ANGLE=1				## If 1, angle is asymmetric. If 0, angle is symmetric
CURVED=1			## If 1, evolve curved sides. If 0, sides are straight
A=1				## If 1, A is asymmetric
B=1				## If 1, B is asymmetric
SEPARATION=0    		## If 1, separation evolves. If 0, separation is constant
NSECTIONS=2 			## The number of chromosomes
DEBUG_MODE=0			## 1 for testing (ex: send specific seeds), 0 for real runs
				## These next variables are the values passed to the GA
REPRODUCTION=3			## Number (not fraction!) of individuals formed through reproduction
CROSSOVER=36			## Number (not fraction!) of individuals formed through crossover
MUTATION=1			## Probability of mutation (divided by 100)
SIGMA=5				## Standard deviation for the mutation operation (divided by 100)
ROULETTE=0			## Percent of individuals selected through roulette (divided by 10)
TOURNAMENT=1			## Percent of individuals selected through tournament (divided by 10)
RANK=9				## Percent of individuals selected through rank (divided by 10)
ELITE=0				## Elite function on/off (1/0)

#####################################################################################################################################################
  141   Fri Feb 4 16:10:32 2022 Julie RollaRun Log Template

For PAEA Algorithm:

Part I: Complete as soon as the run starts

Run details: Please answer all of the questions below!

  • Run Type
    • Answer here whether or not it's AREA (Gain pattern evolution) or PAEA (Bicone evolution)
  • Run Date
    • Add answer here
  • Run Name
    • Add answer here
  • Parameters evolved
    • Add answer here
  • Why are we doing this run?
    • Add answer here about what we are testing
  • What is different about this run from the last?
    • Add answer here with info on what we are doing differently from the last run
    • Example: We are testing a new operator, we are changing the percentages of each selection method used, etc.
  • Symmetric, asymmetric, linear, nonlinear (what order):
    • Add answer here (say N/A if this is an AREA run)
  • Number of individuals (NPOP):
    • Add answer here
  • Number of neutrinos thrown in AraSim (NNT):
    • Add answer here
  • Operatiors used (% of each):
    • Add answer here
  • Selection methods used (% of each):
    • Add answer here
  • Are we using the database?
    • Add answer here. This can be found in the main bash script within the variables section. (Answer N/A for AREA run)

Please upload the text file with all run details before closing this!


Part II: Complete as soon as the run ends

Results: Once this run completes, please upload the plot(s) to this post as an attachment, as well as a general explanation of the results. 

  • Summary and comments on results
    • Add thoughts on what we should do next here!
    • Example: "It seems like we are seeing minimal evolution. We should take a step back and try to see why we don't see improvement. Once we trouble shoot, we can start a new run to investigate."
    • Example 2: "Run looks good! Our best individual is in generation #12. Attached are the CAD drawings of that individual."

**Upload all plots, run parameter text files (file that has run settings saved), CAD models of best indivduals, etc**








For AREA Algorithm:

Part I: Complete as soon as the run starts

Run details: Please answer all of the questions below!

  • Run Type
    • Answer here whether or not it's AREA (Gain pattern evolution) or PAEA (Bicone evolution)
  • Run Date
    • Add answer here
  • Run Name
    • Add answer here
  • Parameters evolved
    • Add answer here
  • Why are we doing this run?
    • Add answer here about what we are testing
  • What is different about this run from the last?
    • Add answer here with info on what we are doing differently from the last run
    • Example: We are testing a new operator, we are changing the percentages of each selection method used, etc.
  • Single frequency run or run with broadband frequency dependence:
    • Add answer here
  • Number of individuals (NPOP):
    • Add answer here
  • Number of neutrinos thrown in AraSim (NNT):
    • Add answer here
  • Operatiors used (% of each):
    • Add answer here
  • Selection methods used (% of each):
    • Add answer here
  • Any other things to note?
    • Add answer here

Please upload the text file with all run details before closing this!


Part II: Complete as soon as the run ends

Results: Once this run completes, please upload the plot(s) to this post as an attachment, as well as a general explanation of the results. 

  • Summary and comments on results
    • Add thoughts on what we should do next here!
    • Example: "It seems like we are seeing minimal evolution. We should take a step back and try to see why we don't see improvement. Once we trouble shoot, we can start a new run to investigate."
    • Example 2: "Run looks good! Our best individual is in generation #12. Attached are the CAD drawings of that individual."

**Upload all plots, run parameter text files (file that has run settings saved), gain patterns of the two best and two worst individuals, etc**

         

 

  140   Mon Nov 8 17:27:01 2021 Ethan Fahimi07/20/2021 AREA run 3 violin plot

This is a plot made from the AREA project with full Arasim implementation with each gain pattern of each individual being fixed across all frequencies.

This run was done with 50 total individuals per generation, across 36 generations. Each individual was tested with 4 seeds of 10,000 neutrinos, for a total of 40,000 neutrinos. For each new generation, 25 individuals were created with roulette crossover, 8 with roulette mutation, 9 with tournament crossover, and 8 with tournament mutation.

individual 32 in gen 20 and individual 35 in gen 27 look promising (they have Veff > 8)

Attachment 1: 20211104fahimi5run2.png
20211104fahimi5run2.png
  Draft   Mon Nov 8 17:04:30 2021 Ethan Fahimi11/04/2021 AREA run 2 violin plot

This is a plot made from the AREA project with full Arasim implementation with each gain pattern of each individual being fixed across all frequencies.

This run was done with 50 total individuals per generation, across 36 generations. Each individual was tested with 4 seeds of 10,000 neutrinos, for a total of 40,000 neutrinos. For each new generation, 25 individuals were created with roulette crossover, 8 with roulette mutation, 9 with tournament crossover, and 8 with tournament mutation.

Attachment 1: 20211104fahimi5run2.png
20211104fahimi5run2.png
  138   Fri Sep 17 13:41:36 2021 Ethan Fahimi07/20/2021 AREA run 3 violin plot

This is a plot made from the AREA project with full Arasim implementation. It can be seen that the Veff of any individuals is not what I would consider "good", nor is it really rising, it is quite flat. This is because in this version of AREA, the gain pattern at each frequency is generated differently than each other frequency, there is no correlation. This is known and actively being corrected. This plot is of old data and was just made for two reasons: to make sure that the violin plotting script works for AREA, to display this early form of AREA that has been adapted for full Arasim.

This run was done with 50 total individuals per generation, across 36 generations. Each individual was tested with 4 seeds of 10,000 neutrinos, for a total of 40,000 neutrinos. For each new generation, 25 individuals were created with roulette crossover, 8 with roulette mutation, 9 with tournament crossover, and 8 with tournament mutation.

This plot is further detailed in Julie Rolla's doctorate thesis.

Attachment 1: Image_9-13-21_at_6.35_PM.jpg
Image_9-13-21_at_6.35_PM.jpg
  137   Wed Sep 8 16:36:33 2021 Alex MMODE Workshop Presentation

We presented at a workshop put on by the MODE collaboration. MODE is a collaboration dedicated to applying Automatic Differentiation to detector design. Here's the website: https://mode-collaboration.github.io/#:~:text=MODE%20(for%20Machine%2Dlearning%20Optimized,in%20space%2C%20and%20in%20nuclear

 

Attachment 1: GENETIS_MODE_Presentation.pptx
  136   Fri Sep 3 14:28:55 2021 Alex MPlots for 9/3/21 Collaboration Meeting

This ELOG post contains plots I made this week for comparing the antennas as they were evolved in the run being discussed in the upcoming paper with those same antennas when using realized gain instead of gain. These plots are preliminary, in that they should be edited before being placed in a paper (for example, VSWR is not in dBi).

Plots:

  • Gain vs Realized gain
    • Polar plot showing the gain and realized gain of the best individual from the run in the paper
  • VSWR/S11
    • The VSWR of the best individual in the run over the frequency bandwidth
  • Gain differences
    • The difference between the gain and the realized gain for the best individual over the frequency bandwidth
Attachment 1: polar_plot_300.04.png
polar_plot_300.04.png
Attachment 2: polar_plot_200.02.png
polar_plot_200.02.png
Attachment 3: VSWR_plot_1811.png
VSWR_plot_1811.png
Attachment 4: mean_gain_difference_1811.png
mean_gain_difference_1811.png
  Draft   Fri Sep 3 14:06:39 2021 Alex MPlots for 9/3/21 Collaboration Meeting

Here are plots I made for the meeting on 9/3/21. These plots represent a comparison of the gain and realized gain for the 23rd generation of the run being discussed in the upcoming paper. Here is a list of the plots

  • Gain vs realized gain
    • Polar plots of the best individual from generation 23 
  • S11/VSWR plots
    • Shows the S11/VSWR over the bandwidth for the best individual
  134   Wed Jul 14 15:45:30 2021 Ethan FahimiWednesday Updates (7/14/2021)
Ethan Worked with Alex on fixing a few bugs with AREA. We are trying to solve an issue where the individuals are not finishing runs (around one in every four gens with 100 individuals). We believe some individuals may be too good and are then taking more than the wall time we have given them. Alex is testing this while I am working on a script that will add all the weights in the temp_{ind}.txt files. (See weightAdder.py for more)
   
   
   
   
   
   
  133   Wed Jun 23 16:34:10 2021 Ethan FahimiDaily Update 6/23/2021
Name Progress Plans
Alex M    
Lydon    
Ryan

 

 
Ben    
Ethan With Alex M's help, managed to get AREA working, plotted results. The results look relatively flat, possibly the GA is unoptimized, may need work.
Parker    
Elliot    
Leo    
Evelyn    

 

  132   Tue Apr 6 18:00:23 2021 Julie RollaGENETIS Google Drive with Talks/Posters, Grant writings, Papers

https://drive.google.com/drive/folders/1iDamk46R2_oOLHtvsOg4jNy05mCiB7Sn?usp=sharing

  131   Fri Mar 19 17:39:47 2021 Alex MNew Run

We began a new run using the same parameters as the previous one (see the last ELOG entry). The previous one ran for 8 generations. The difference between this run and the last one is that we have added in the polarity fix for AraSim Brian and Jorge gave us (copying the correct Report.cc and Report.h files into our AraSim version). Here are the run parameters:

Run Paramaters:
50 individuals
80/20 Roulette/Tournament
6% Reproduction, 72% Crossover, 22% Mutation
Run for 10 generations, then implement Jorge and Brian's fix for polarization in AraSim for the next run
  130   Mon Mar 15 13:05:22 2021 Alex MCurrent Run

We are currently running the loop using the improved parameters. The parameters are as follows:

50 individuals
80/20 Roulette/Tournament
6% Reproduction, 72% Crossover, 22% Mutation

Also note that individual 5 of generation 1 had its fitness score altered because one of its AraSim jobs didn't finish in time (and we would have had to wait 5 hours for it to rerun). To remedy this, I replaced the effective volume for the job with the average of the effective volumes from the other jobs for individual 5 (essentially meaning that it ran with 270k neutrinos instead of 300k). There is a .txt file in the directory titled Run_Notes.txt containing this message (and which will contain additional messages on similar things should they arise).

Run directory: /fs/project/PAS0654/BiconeEvolutionOSC/BiconeEvolution/current_antenna_evo_build/XF_Loop/Evolutionary_Loop/Run_Outputs/Improved_Parameter_Run_2021_03_09

  129   Thu Mar 11 15:41:52 2021 Alex MRunning The Loop Updated

Because of issues we were having with XF when running at the command line, we've shifted to running through a Pitzer VDI (see here: https://ondemand.osc.edu/pun/sys/dashboard/batch_connect/sys/bc_desktop/vdi/session_contexts/new).

The VDI will give you a mirror of a desktop running on OSC's side, so things like XF will run much faster. You can open a terminal by clicking the black box at the bottom of the screen and then run the loop like normal (./Asym_XF_Loop.sh). This has the added benefit of making it possible to exit out of your browser, close your laptop, or turn off your computer without interrupting the run, since the process is running on OSC's side rather than piping to your computer.

  128   Fri Jan 29 15:59:21 2021 Alex MLoop Demonstration Video

Here's the video I made a few months ago demonstrating how to run the loop. There might be some changes that have been made since then, but they'll generally be minor so it should still be representative of what running the loop looks like. It might need to be shared with you through the Microsoft drive service OSU gives us in order to view it, so either message me on Slack or email me at machtay.1@osu.edu and I'll share the link through there.

https://drive.google.com/file/d/1yL_eH_w2hXNt7J7YOwS5xl3ZHwGyl5JR/view

  127   Tue Jan 26 17:17:41 2021 Ethan FahimiTuesday Updates 01/26/2021
Ethan F Continued implementing some solutions the OSC helpdesk gave me for fixing the unwanted extensions on the job output files.
   
   
   
   
   
   
  126   Tue Jan 19 19:00:30 2021 Alex MLatest Run Details/Running on Slurm

OSC managed to figure out our issue with running XF from an interactive job on Slurm. Previously, we were losing our connection to x11 forwarding. The solution is to use sinteractive instead of srun to obtain an interactive job. Here's the syntax:

sinteractive -A PAS0654 -t <time> -N 1 -n 8 -p serial

The -p serial flag denotes the type of partition to request. It's important to specify this, as otherwise it will default to the debug node, which has a limit of 1 hour.

 

We're going to begin a new run. The title is Machtay_2021_1_15_NPOP50_Asym . It is using the latest version of the GA Ryan has been working on (Latest_GA_Asym.cpp). We're using 6% reproduciton, 72% crossover, and 22% mutation. We are using 80% roulette selection. This correlates to the three numbers passed into the GA being 3 36 8 (since we're using 50 individuals).

  125   Fri Dec 11 17:47:48 2020 Ethan FahimiFriday Updates
Ethan F Fixed the issued AREA was having with finding test_{ind}.txt, now to fix problems with finding Veff and the project should be working.
   
   
   
   
   
   
  124   Mon Dec 7 22:51:08 2020 Alex MImportant Runs

Today I removed some of the run directories which had very little or no data or weren't worth keeping around. There are still a few that I think can be removed, but I'm keeping them until we can get a consensus that they can definitely be removed. Below I listed the names and descriptions of the runs that I think we should definitely preserve going forward. In general, the more data contained in the run directory, the more important it is to keep around. 

Name Description Symmetry NPOP Generations Roulette/Tourney Crossover Reproduction  Mutation  Penalty Neutrinos  
Machtay_20200824_Real_Run

First real run with significant amounts of data after the summer improvements.______________________________________

Symmetric 10 15 100% Roulette 100% 0% 100% Yes 100k  
Machtay_20200827_Asym_Length_Run First asymmetric length run after summer improvements. Asymmetric length 10 17 100% Roulette 100% 0% 100% Yes 100k  
Machtay_20200831_Asym_Length_and_Angle Asymmetric length and angle run after summer improvements. Asymmetric length and angle 10 42 100% Roulette 100% 0% 100% Yes 150k  
Machtay_20200911_Symmetric Longer symmetric run with fewer neutrinos. Symmetric 10 35 100% Roulette 100% 0% 100% Yes 30k  
Machtay_20200914_Asymmetric_50_Individuals Longer asymmetric run with fewer neutrinos. Asymmetric (all dimensions) 50 26 100% Roulette 100% 0% 100% Yes 30k  
Machtay_20201016_Symmetric_Improved_GA First run using improvements to GA based on Ryan's paperclip/fast loop analysis. Symmetric 50 10 50/50 75% 10% 15% Yes 30k  
Machtay_20201023_300K_Nus_50_Individuals Started with all identical individuals to demonstrate evolution; replaced penalty with hard cutoff. Increased Nus for higher fitness score precision. Asymmetric (all dimensions 50 25 50/50 75% 10% 15% No 300k  
                       
                       

 

 

  123   Wed Dec 2 15:24:39 2020 Alex MGuide for Loop Errors

Attached is a .txt file you can find in the Evolutionary_Loop directory as Loop_Error_List.txt. It's a list of the current errors we sometimes experience in the loop, along with how to fix them if you encounter them while running. If people encounter errors that aren't in the list, let everyone know in the #genstudents chat on slack and update the file with the error message and when it was encountered (what state the loop was in) and the possible cause and solution if you know it. 

Attachment 1: Loop_Error_list.txt
Below is a list of errors we may encounter in the loop as of 11/25/20:

Error: "Pre-while, pre-for"
Description: This is an error you'll encounter after AraSim has "completed." The loop will hang after outputting "Pre-while" and then "Pre-for." This comes from the fitness function--the loop is indicating that it is inside the fitness function right before it enters the two loops it runs over the AraSim data. Hanging here indicates that there was an issue running AraSim. Specifically, it indicates that at least one of the jobs for the *first* individual in AraSim failed. 

Potential causes:
This may be caused by an issue in generating the gain files used for AraSim. These gain files are placed in the AraSim directory under the names a_{num}.txt, where {num} represents the individual number. You can check a_1.txt in the AraSim directory and see if it's complete (if it isn't, you can usually tell just by opening the file and seeing that only two lines have been printed to it).

One way of looking for the cause of this error is to look at the job error files. Inside the {runname} directory are directories containing the error and output files from the AraSim jobs. These are .../{gen}_AraSim_Errors and .../{gen}_AraSim_Output, where {gen} is the generation number. One example of an error message I've seen in the error files was 

"
terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::substr
/var/spool/slurmd/job2345909/slurm_script: line 37: 171196 Aborted                 (core dumped) ./AraSim setup.txt $runNum outputs/ a_${num}.txt > $TMPDIR/AraOut_${gen}_${num}_${Seeds}.txt

"

This appeared in all of the error files for the first individual's jobs. 

Resolution:

The best way to resolve this is to start by checking the error files. In the case of the error message above, it would be best to go to the AraSim directory and check for the a_{num}.txt file. If you see just one (ex: a_1.txt), then that's likely to be the culprit (especially if the file is obviously not completely filled)--these files should be removed, so if one is left it may not have been moved correctly, likely due to permissions errors. Remove the a_{num}.txt file and restart from the AraSim job submissions (potential speed up: add part of the error message to the self-correcting phrases in Part_D2_AraSeed.sh to only rerun those individuals).

It's also possible that the issue was caused in XF. Make sure you follow the instructions above and start back at stage 2 to restart from the beginning of XF if starting back from AraSim doesn't work. Try to take notes on the differences you see to add to this.

It's also notable that this may be caused by permissions issues. Every time someone is handing the loop off to someone else, the OpenPermissions.sh script should be run (passing the {runName} as an argument). Look in that script to determine which files need to have open permissions. If the person with ownership of the closed files isn't available to open them, you can remove them and start back from where they would have been created. This usually occurs in AraSim and the AraOut files in Antenna_Performance_Metric should have their permissions fixed or be removed (for that generation only).

*****************************************************************************

Error: <Loop hangs while outputting dimensions and fitness scores>

Description: 
This is similar to the error above, except that instead of hanging on the first individual, it hangs on some later individual. 

Resolution: 
The instructions for resolving this should be the same as the ones above. This seems to be less common and is usually resolved by the self-correcting code in Part_D2. Regardless, if you encounter this error the first step should be to follow the instructions below in case there is just one or a handful of failed AraSim jobs. If that doesn't work, step back to stage 5 to resubmit the AraSim jobs after clearing out the possible offending files. If that doesn't work, step back to XF (you can always just step back to XF at the beginning if you're unsure that stepping back to AraSim will resolve this to potentially save time).

It's also possible that there is an error in just a handful (or even just one) of the AraSim jobs. This might be caused by opening permissions after someone has already taken over running the loop. In this case, you might be able to start the loop back up without needing to resubmit all of the AraSim jobs or step back all the way to XF. To do this, you'll need to figure out which AraSim job failed. Check the AraSim error files and output files for that generation (specifically, check to see if one is *missing*). You should be able to figure out which individual the loop is stuck on by counting how many sets of dimensions and fitness scores were printed to screen before the loop started hanging. Go to /Antenna_Performance_Metric (inside .../Evolutionary_Loop) and list all of the AraOut files corresponding to that individual and check them to see if any of them appear incomplete (AKA don't have an effective volume at the bottom).

Once you find the individual jobs that failed, you can set up the loop to only rerun those jobs. First, go to the AraSim flags directory inside the RunName directory and populate the the flags like so:

>for i in `seq 1 <NPOP>
>do
>for j in `seq 1 <jobs per individual>
>do
>echo <gen> > ${i}_${j}.txt
>echo $i >> ${i}_${j}.txt
>echo $j >> ${i}_${j}.txt
>done
>done

This will populate all of the flag files needed for AraSim to move on. Remove the flag files corresponding to the identified failed AraSim jobs. Next, go into the AraSim error file directory in the RunName directory (/<gen>_AraSim_Errors) and replace any text inside the error files corresponding to the failed AraSim jobs with the phrase "segmentation violation" (spelling and capitalization matter!). This is one of the phrases used in the self correcting part of the loop in Part_D2 and indicates to the loop to resubmit the AraSim job for that individual. 

After doing this, you should be able to return to .../Evolutionary_Loop and change the savestate in /savestates to 6 from 7. Now you can start back the loop and it will tell you that it's waiting for the AraSim jobs to finish. After 1/2 minutes it will notice that the error files have "segmentation violation" in them and will resubmit only the AraSim jobs you specified as having failed.

*****************************************************************************

Error: "cannot connect to X11 forwarding" (or something to that effect)

Description: 

This usually occurs during XF, but it may occur during the display of plots. In the case of plots being unable to display, the loop should still be able to operate, though plots might not update. However, if this message occurs during XF the data for the gain patterns for the antennas won't be properly created. This can occur at the first opening of the XF GUI or on the second part (after the xfsolver jobs have run).

Potential causes: 

First, you should make sure that you are logged in to OSC using <ssh -XY userID>. The -XY allows x11 forwarding, which is needed for the XF GUI to appear. Also remember to indicate that you need X11 forwarding when requesting your interactive job (using --x11). It's also possible that your connection to the X11 forwarding can be interrupted after a long time (I've seen the loop work for several generations over multiple interactive job submissions and then suddenly get this error). 

Resolution: 

My advice is to log out and back in to OSC each time your interactive job ends. This is an uncommon error but it's easy to miss. Once you've logged back in, you'll need to restart the save state back to the part of XF where you got this error (either 2 or 3 depending on which par the error appeared in).

*****************************************************************************

Error:  

  122   Mon Nov 30 17:00:31 2020 Ethan FahimiMonday Updates
Alex M Kicked the loop back up. Helped Ethan and Parker with their projects during the working meeting.
Ryan Changed the tournament/roulette ratio, reproduction_no, and crossover_no to be read in variables in the GA to increase the quality of life when running the algorithm and to prep the code for some testing. Format for how to call the code is written at the top of the cpp program file.
Ethan F Worked with Alex M on further fixing AREA. The first generation works now, we are making minor fixes to get subsequent generations up and running.
   
   
   
   
  Draft   Mon Nov 30 16:59:39 2020 Ethan FahimiDaily Update 10/30
Name Progress Plans
Alex M    
Alex P    
Ryan

Attempted to make a  new mutation function for the algorithm to try and address the concerns about hitting local maximums from Wednesday. Unfortunately, the idea was unsuccessful when I put it through testing. I would like some input from some of the experts before trying something else. Otherwise, the version I had earlier this week has still been very consistent about optimizing the runs outside of sometimes hitting a local max at about 90/100.

 

 
Ben    
Ethan Moved AREA onto my own directory with Alex's help. Began fixing issues with it (small win, no more permissions issues!). Continue fixing issues with AraSim on my user.
Parker    
Elliot    
Leo    
Evelyn    

 

  120   Mon Nov 23 18:02:40 2020 Ryan DeboltMonday Updates
Alex M Kept working with Amy, Alex P, Julie, and Ben on the AraSim fix. We fixed our issue from last week but have a new one in stage 2. It looks like the issue has to do with resetting the values for V_forfft right before stage 2 (around line 963). Check here for the current version of Report.cc: /users/PAS0654/pattonalexo/EFieldProject/11_23_20
Ryan Fixed the issue with the segmentation faults in the GA (simple fix one line changed) and worked with Kai to start creating a spreadsheet of results. Results seem to suggest that 2 tournament to 8 roulette seems to be the ideal selection ratio and the initial test seem to suggest a small amount of reproduction is ideal but more testing is needed to confirm this.   
   
   
   
   
   
  119   Fri Nov 20 17:50:05 2020 Alex MWorking Meeting 11/20/20
Alex M We worked with Amy to track down the error we were getting with the AraSim fix. Alex P and I had gotten AraSim to compile, but running gave the error (at the bottom). We did a binary search for the source of the error and determined it comes from the if statement around line 640 in Report.cc:

if ( event->Nu_Interaction[0].LQ > 0 && (fabs(viewangle-signal->CHANGLE_ICE)<=settings1->OFFCONE_LIMIT*RADDEG) ) {
Ryan Kept testing different rations of tournament and roulette. A trend seems to appear that while full roulette was the worst run overall, it rises until a ratio of about 8R:2T with a max score of 99.22% match and then it slowly falls from that point. Need to do more testing to verify averages and to fix strange segmentation faults in crossover when running 6T and 8T ratio. 
   
   
   
   
   

AraSim EField project Error:
 


 *** Break *** segmentation violation

===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0  0x00002b845aeb445c in waitpid () from /lib64/libc.so.6
#1  0x00002b845ae31f52 in do_system () from /lib64/libc.so.6
#2  0x00002b84562bebf4 in TUnixSystem::StackTrace() () from /cvmfs/ara.opensciencegrid.org/trunk/centos7/root_build/lib/libCore.so
#3  0x00002b84562c13ea in TUnixSystem::DispatchSignals(ESignals) () from /cvmfs/ara.opensciencegrid.org/trunk/centos7/root_build/lib/libCore.so
#4  <signal handler called>
#5  0x000000000044fd70 in void std::vector<double, std::allocator<double> >::emplace_back<double>(double&&) ()
#6  0x00000000004c3c0e in Report::Connect_Interaction_Detector(Event*, Detector*, RaySolver*, Signal*, IceModel*, Settings*, Trigger*, int) ()
#7  0x0000000000436eb3 in main ()
===========================================================


The lines below might hint at the cause of the crash.
You may get help by asking at the ROOT forum http://root.cern.ch/forum
Only if you are really convinced it is a bug in ROOT then please submit a
report at http://root.cern.ch/bugs Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#5  0x000000000044fd70 in void std::vector<double, std::allocator<double> >::emplace_back<double>(double&&) ()
#6  0x00000000004c3c0e in Report::Connect_Interaction_Detector(Event*, Detector*, RaySolver*, Signal*, IceModel*, Settings*, Trigger*, int) ()
#7  0x0000000000436eb3 in main ()
===========================================================

  118   Thu Nov 19 16:42:06 2020 Alex PattonDaily Update 11/19/20

I hopped on with Alex M to catch him up with what has been done and changed within AraSim so far. I looked into using pointers to access arrays outside of their declared scope and it seemed reletively easy to set up. I set up a pointer corresponding to the arrays V_forfft, T_forfft, and vmmhz_filter and set them at the end of stage one in order to be used in stage two. Also made sure to delete the pointers at the end of stage 2 (Very Important). After this and finding the correct scope to put the deletes in, we complied and didn't get an error in Report.cc. Once it compiled I signed off to study for exam and Alex M will now take over and start to run tests to make sure that with the same seed this gives the same results as a base copy of AraSim. After this the next step would be to start implementing a way to save all the variables from stage one and reading them into stage 2.

  117   Fri Oct 30 17:30:16 2020 Ethan FahimiDaily Update 10/30
Name Progress Plans
Alex M    
Alex P    
Ryan

Attempted to make a  new mutation function for the algorithm to try and address the concerns about hitting local maximums from Wednesday. Unfortunately, the idea was unsuccessful when I put it through testing. I would like some input from some of the experts before trying something else. Otherwise, the version I had earlier this week has still been very consistent about optimizing the runs outside of sometimes hitting a local max at about 90/100.

 

 
Ben    
Ethan Moved AREA onto my own directory with Alex's help. Began fixing issues with it (small win, no more permissions issues!). Continue fixing issues with AraSim on my user.
Parker    
Elliot    
Leo    
Evelyn    

 

  116   Mon Oct 26 17:59:10 2020 Ethan FahimiDaily Update 10/26
Name Progress Plans
Alex M    
Alex P    
Ryan I have the testing loop finished with plotted results now. The program was able to reach optimal results very quickly. It used 100% tournament selection with a cutoff on the outer radius. The algorithm was using an asymmetric algorithm and the ideal bicone it was being compared to was an arbitrarily picked one from an actual symmetric run individual we knew to stay within the outer radius. All individuals for each generation are plotted on this graph. And the fact that these bicones started as asymmetric shows that we can very easily find symmetric answers if they are indeed ideal.   
Ben    
Ethan Tried to fix permission issues with AREA, as well as learned about running the loop and listening to Jorge's thoughts on our project. Possibly move the AREA project onto the project space as it may solve permissions issues. Alex is looking into it.
Parker    
Elliot    
Leo    
Evelyn    

 

Attachment 1: fitness.png
fitness.png
  115   Mon Oct 19 17:02:12 2020 Ethan FahimiDaily Update 10/19
Name Progress Plans
Alex M    
Alex P    
Ryan Alex P. and I put the outer radius constraint into the Asymmetric our version of the algorithm. I have also created the pseudo-fitness function to be able to do some optimization testing that bypasses the time-consuming parts of the run. All I need to do to finish the pseudo tests is to create a loop to run through the generations and plotting procedures.   
Ben    
Ethan Tried to fix permission issues, as well as work on running the loop (invalid id) Continue fixing AREA permission issues with Ben's help.
Parker    
Elliot    
Leo    
Evelyn    

 

  Draft   Fri Oct 16 17:32:49 2020 Alex PattonDaily Update 10/16/20
  Update Plans for Monday
Alex M

 

 
Alex P and Ryan Made new version of our modified GA that is asymetric. We didn't include the options to start with symetetry but just wanted to get it to a compilable state so that we can test how it would run in the loop to make sure it functions properly there. We also have a real run going with our previous symetrical GA edit. Watch this run over the weekend and keep it going and then eventually test how the asymetric version works
Eliot    
Ben    
Leo    
Evelyn    
Ethan Worked with Ben and Alex M on getting the AREA project working on slurm. It works now, but there are some permissions issues that we still need to fix. Simply put, Ben can run it perfectly right now. Find and address permissions issues so anyone can run a job.
  113   Mon Oct 12 17:34:29 2020 Alex PattonDaily Update 10/12/20
Name Update Plans for Week
Alex M

 

 
Alex P, Ryan, and Ben Finished up writing the updated GA and got it compilable and then got some run time segmentation faults but managed to get all of those fixed. But once we got it running we encountered an error where a lot of the generationDNA ended up being 0,0,0. We looked through our functions and confirmed this was only happening with indiviudals developed through crossover and not mutation or reproduction Get this problem fixed in crossover and continue to test and make sure this works as intended but so far it is able to generate genDNA files and just has that one bug. The bug is also every other individual so we think we might have messed up how crossover generates two individuals from parents so it should hopefully be an easy fix.
Eliot    
Leo    
Evelyn    
Ethan .  
  112   Fri Oct 9 17:37:57 2020 Alex PattonDaily Update 10/9/20
Name Update Plans for Monday
Alex M

 

 
Alex P, Ryan, and Ben Got all functions finished and worked on adding them to main. We set up their calls and commented out the unfunctionalized code with a comment explaining what it was and what date it was commented out. Had to define new variables for limits on our mutation function now that our mutation function is uniformly distributed within a range rather than using standard deviations. Also created some more global variables for maximum outer radius and minimum length in order to have them more accessible. Finish up implementing and defining variables so that it can run the functions properly. Hoping to have it ready to test on monday.
Eliot    
Leo    
Evelyn    
Ethan .  
  111   Mon Oct 5 21:06:29 2020 EveryoneData Runs

Machtay_20200831_Asym_Length_and_Angle    10 individuals
Machtay_20200911_Symmetric                             10 individuals, fewer neutrinos
Machtay_20200914_Asymmetric_50_Individuals  50 individuals, fewer neutrinos
Machtay_20200929_Asymmetric_test_2               50 individuals, fewer neutrinos, broaden parameter range

 

  Draft   Mon Oct 5 17:34:32 2020 Leo DeerUpdate Monday 10/5/2020
Name Update Plans for Monday
Alex M

 

 
Alex P   Finish up mutation function and then make sure it functions properly, currently our added functions all compile but we haven't tested if they are functioning as intended yet. Also have some questions about handling the standard deviations in mustations but first we want to get it functioning before applying more tweaks
Eliot Worked on learning about 3D plotting in python. Made a simple surface plot that can be expanded upon for our purposes.  
Leo Fixed the averge Fscore Plot so that it connects the mean values with a line instead of making them discrete points. Then I made Kai's plot suggestion. For that I copied the current FScore plotting software and made some edits so that it takes in 2 runs and plots the fitness scores of both in either red or green along with the average fitness score of both. I'll attach images of what these 2 plots look like. For Friday I'm going to look over the other plotting suggestions but most likely begin on fixing the random seperation in the RLTS plots.
Evelyn    
Ryan    
Ben    
Ethan    

 

Attachment 1: FixedFScore.png
FixedFScore.png
Attachment 2: RedPlot.png
RedPlot.png
  109   Fri Oct 2 17:11:25 2020 Ethan FahimiUpdate Friday 10/2/2020
Name Update Plans for Monday
Alex M

 

 
Alex P    
Eliot    
Leo Today I started working on improving the plots. I started with plotting the average fitness score for each generation on top of all the individuals data points. I made the average fitness score a star with higher contrast so it will stand out. Here is the plot of the first 26 generations of the "Machtay_20200914_Asymmetric_50_Individuals" run with the new averages. On monday I'm going to try and create the plot of  2 runs overlaid on top of eachother as Kai suggested.
Evelyn    
Ryan Worked with Ben and Alex P. on making the Bicone function modular on our copy. We finished writing a new roulette selection function, tournament selection function, and reproduction function.  Finish writing the mutation and crossover functions. After these are complete apply these functions in place of the existing function that is wrong and test to make sure the results are not producing errors. 
Ben    
Ethan Updated the AREA code with Alex M's help to work using SLURM. Began a trial run to see if our updates work. Begin making changes that allow the job to run faster as well as investigate what is causing some individuals to have fitness scores beyond what should be physically possible.
Attachment 1: Screen_Shot_2020-10-02_at_5.39.33_PM.png
Screen_Shot_2020-10-02_at_5.39.33_PM.png
  108   Mon Sep 14 17:23:26 2020 Alex MGENETIS Update 9/14/20

I just wanted to give an update on what I've been doing today for GENETIS. I went ahead and recorded myself running the loop. It should be useful for new people we're onboarding but I also went through a whole generation, which I think is interesting for everyone to understand the timescale of each part of the loop. I'm making a small edit (I have no clue how to edit videos haha) so once I'm done I'll try to send it via email and post it on slack. I also started a long run Amy requested using antennas which are asymmetric in length and opening angle and 50 individuals per generation. Since it has so many individuals it will take a long time to go through each generation. I also had to decrease the number of AraSim jobs (thus increasing the number of neutrinos per job) because otherwise we'd be submitting too many jobs and have a lot of them blocked, holding us back from running. If anyone has problems with me using up too many jobs let me know and I can try to decrease the numer of jobs per individual futher (right now I have 10 jobs per individual with 3000 neutrinos per job, which gives us 500 AraSim jobs per generation).

  107   Wed Sep 9 17:28:54 2020 Alex MUpdate 9/9/20
Name Update Plans for tomorrow
Alex M

I've been working on readying the loop for the transition to slurm. OSC is switching from its current job managing software (torque/moab) to slurm, which uses some different commands but is functionally similar. Since we have places where jobs are called in the script, I've been changing them (with a backup copy of those files that we know works on torque). 

Right now I'm testing all of the changes I've made on the space OSC has set aside for playing with slurm. I have changes in all of the places I think they belong, but I need to make sure there aren't typos/different commands from what I've used. 

I'll keep testing the changes I've made for slurm. I'll also try to organize some of the dfferences I've found in using slurm vs torque (for example, requesting an interactive job) so that everyone can see them and be able to find out what to use when OSC makes the switch (Pitzer changes on the 22nd, Owens is in November I think).
Alex P    
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

  106   Mon Aug 31 18:32:21 2020 Alex MDaily Update 8/31/20
Name Update Plans for tomorrow
Alex M

I started working on the slides for our meeting with Wolfgang this Friday. I'll share it via one drive/email/slack tomorrow for comments from everyone.

Over the weekend I finished the asymmetric length run. I still have a couple of fixes to make on plotting scripts, so I'll update those plots tomorrow after making the fixes. I also started a new run today using both an asymmetric length and an asymmetric opening angle. The plots aren't automatically uploading to dropbox anymore because we hit our limit, so I'll have to add them manually. You can see the asymmetric run on dropbox under  Machtay_2020_08_27_Asymmetric_Length_Real_Run(SECOND REAL RUN).

I'll finish up and share rthe power point with everyone and then fix up the plotting scripts and continue the current run. I also need to try getting onto the UW super computer in advance of the ARA bootcamp on Wednesday/Thursday. 
Alex P    
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan Futher worked on documentation of the genetic algorithm. Ben is currently doing a big run to test the program. Once the big run is finished, we will look at the data and attempt to fix any issues that may arrise.

 

  105   Fri Aug 28 16:31:56 2020 Alex MFirst Results Slides

Here's a power point I showed today at the GENETIS meeting for the two most recent runs we did. The first run was symmetric and we ended it at 15 generations. The second one is ongoing and is shown up through generation 9 on the power point.

Attachment 1: GENETIS_Meeting_Loop_Results_2020_08_24.odp
  Draft   Fri Aug 21 15:19:10 2020 Ryan DeboltFriday Updates
Name Update Plans for next week
Alex M    
Alex P    
Eliot    
Leo    
Evelyn    
Ryan This week I completed work on a set of graphs that shows many instances of of a run type on a graph to show the spread that runs give. I am still working on finishing up the plots that show averages of roulette to tournament for each sigma but the should be finished soon.   Finish the aforementioned plot.
Ben    
Ethan Ben and I spent the week working on two seperate python scripts, one to plot the fitness scores of each child in each generation, and another to replace dummy Veff scores with Veff scores found in another file. We also updated the documentation on OverLeaf. On monday we will continue to keep updating the documentation as well as continueing to imporve AREA.
  Draft   Tue Aug 11 19:56:45 2020 Alex MDaily Update
Name Update Plans for tomorrow
Alex M

I worked on fixing the AraSim issue today. I think I have it resolved. Essentially, I made a second set of flags that the loop will look for and use the first set of flags to tell the loop which error files to look at to look for the phrase "segmentation fault." If it sees that phrase, it resubmits the job. Otherwise, it makes the second flag. Once all of the flags have been made, the loop can move on. I tested it by manually putting the phrase inside one of the error files to make sure it would catch it and resubmit the job. 

I started a new run (partly to further test the fix, but primarily to get real data). It has the fixes we discussed last week at the GENETIS meeting (ex: mutations shouldn't repeat anymore).

I'm going to be out tomorrow and Thursday so someone needs to pick up my run. I'll make sure I open permissions tonight so that anyone can run it tomorrow. If you have questions you can slack me, but I probably won't be able to respond til super late.

If there are issues with AraSim jobs failing without resubmitting, see the instructions below.

Alex P    
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

Instructions for persisting AraSim errors:

Even if we still have the problem where AraSim jobs fail and the fix doesn't catch them, you can still run the loop as long as you manually step back in the loop. Here's what you have to do:

1. Exit the loop (ctrl-c).

2. Clear the following directories in the RunName directory: AraSimFlags, AraSimConfirmed, (gen)_AraSim_Errors, (gen)_AraSim_Outputs. 

3. Revert the save state (second number goes to 5). This let's you resubmit the AraSim job.

4. Run the loop again (make sure you're still in an interactive job).

  102   Mon Aug 10 16:12:28 2020 Alex MDaily Update 8/10/20
Name Update Plans for Tomorrow
Alex M Over the weekend I tried making some fixes we discussed. I fixed the roulette algorithm (the symmetric version) so that the random number generator is only set once and then passed to functions. It will now print the values in the generator to files to be plotted. I tried running the loop over the weekend with these fixes but the AraSim jobs kept failing. So today I consolidated the two loops and I started working on a fix for AraSim that will automatically check if an AraSim job fails in real time while the loop is running and resubmit it so that we don't get stuck waiting for the jobs to rerun.  I'm going to finish the AraSim fix tomorrow and then try starting a run. I'm going to be out on Wednesday and Thursday, so I'll need someone else to keep the run going.
Alex P    
Eliot    
Leo    
Evelyn    
Ryan Created a program that combed through all the files, got the average high score of each set of parameters, and saved that information in a master file to quickly use for finding which parameters worked best.  Create the programs to make the desired graphs we wanted.
Ben    
Ethan    

 

  101   Fri Aug 7 14:16:01 2020 Alex MDaily Update 8/7/20
Name Update Plans for Monday

Alex M

   

Alex P

   

Eliot

   

Leo

   

Evelyn

   

Ryan

   

Ben

   

Ethan

   

 

  100   Wed Aug 5 16:08:40 2020 Alex MDaily Update 8/5/20
Name Update Plans for Tomorrow
Alex M

Continued running the loop up to gen 15. I also adjusted the LRTPlot script so that it can slightly spread the points along the generation axis so that you can see overlapping points, but I still need to implement this in the loop. 

Helped Ryan design the bash script for running through paperclip many times. It's working and he ran it for a while to get ~1000 outputs checking the performance of different mutation sizes. Next he'll parse through them to find what sigma appears best.

Amy suggested that I make it possible for the roulette algorithm to record the mutations and parents for each individual so that we can get a better sense of the history of the evolution, so I'll work on that tomorrow. If it looks to be working, I'll start a run with an asymmetric length.
Alex P    
Eliot    
Leo    
Evelyn    
Ryan Completed bash script for automating runs and generated 1100 txt and csv (each) files of runs to be able to see how the ratio of roulette to tournament and standard deviation in the mutation function affect the fitness scores after 100 generations.  Work on writing a program to go through the txt files and collect the information of the highest fitness score, stored in line 6 of each one,  and figure out which combination of parameters gives the highest average.
Ben    
Ethan    

 

  99   Tue Aug 4 17:30:09 2020 Alex MDaily Update 8/4/20
Name Update Plans for tomorrow
Alex M I've continued the run I started yesterday. I ran into a bug where the LRT plots weren't being made but it should be fixed now. The loop is on generation 10, but it hasn't really converged or shown a clear pattern. We'll keep this run going until at least gen 15 probably. If we finish this run, I can start another run using the asymmetric version. The goal would be to do a similar number of generations using the asymmetric length first, followed by adding on the asymmetric opening angle.
Alex P    
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

  98   Mon Aug 3 16:39:56 2020 Alex MDaily Update 8/3/20
Name Update Plans for Tomorrow
Alex M I fixed the issues I outlined a little while ago that we needed to resolve before starting a real run. I started a real run with 10 individuals for up to 20 generations using the database for a symmetric bicone. The name of the run is Machtay_20200803_Master_Symmetric_Database_Real (whew!). Right now it's on gen 2 and plots are on drop box (see the link at the bottom).  I'm going to keep the run going and hopefully be most of the way to 10 generations by the end of tomorrow. Julie and I also discussed some potential improvements that can be made to the loop. For one, there's some consolidation and cleaning up that should be done of the main directory. We were also speculating about a way that we could quickly see when AraSim jobs fail and rerun them in real time rather than waiting for all the jobs to finish to realize we need to rerun.
Alex P    
Eliot    
Leo    
Evelyn    
Ryan Continued working on the bash script to automate runs for paperclips.  Finish the bash script and do the runs and start combing through the results. 
Ben    
Ethan    

Dropbox link: https://www.dropbox.com/home/GP_Antennas/Updates/DailyFitnessScoreImages/Machtay_20200803_Master_Symmetric_Database_Real

  97   Thu Jul 30 15:36:54 2020 Alex MDaily Update 7/30/20
Name Update Plans for Tomorrow
Alex M

Tested the database setting for the symmetric loop. It ran well and gave correct results, so all that's left to test is the asymmetric loop (going to start that momentarily). 

Julie and I helped Ben and Ethan set up a git repository for AREA and gave a brief review of using git.

Assuming that the asymmetric setting isn't too dificult to get working on the master branch, I'll be able to start collecting real data. I'll need to implement the fixes I outlined last week on Wednesday (see the ELOG post), but those should be quick changes. I'll start by using the database for a symmetric bicone with 10 individuals per generation.
Alex P    
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

  96   Mon Jul 27 16:52:20 2020 Alex MDaily Update 7/27/20
Name Update Plans for Tomorrow
Aelx M

Leo, Julie, and I merged the two dev branches (Antenna_Database and asymBicone) onto master. I think I resolved all of the conflicts and successfully merged. I'm going to start testing by running each setting (original, database, and asymmetric) through generation 1 to make sure that they give the correct results as the previous test runs and that they have all of the correct files they need to run correctly. Once I'm done with this I'll implement the changes I outlined last week (on the 21st I think) and begin a real run.

I helped Ryan with the paperclip algorithm. We found the error in the roulette algorithm and it now gives results comparable to tournament mode. There is a bug that needs to be fixed (Ryan changed a variable to be taken as an input, but it's giving different results when we input the same values as it had before and neither of us can tell why) but otherwise the script looks much better than last week with the roulette fix. 

I'm going to finish getting confirmation that the master branch works for each of the settings for the loop. Then I'll be ready to implement the fixes and start a real run, beginning with the symmetric setting with the database. 
Alex P    
Eliot    
Leo    
Evelyn    
Ryan Issues with low roulette fitness scores have been resolved (there was just an issue with checking the sum compared to the random number) and it has comparable scores to tournament after similar amounts of runs. Then I started work on fine-tuning the mutation function. Early results seem to suggest that having a high mutation rate gets closer to the optimal score faster but lower mutation rates will get closer given longer amounts of time. Finally, Alex concluded that the max fitness score for these paperclips is 9 (or more specifically one less than the number of segments), and some runs after 1000 generations are reaching into the 8.99*** for high scores and averages. So the goal for me this week is to try to reach that point faster (hopefully within 100 gen).  Continue fine-tuning parts of paperclips to find optimal methods. If I reach that, write a bash script to autorun tests. 
Ben    
Ethan    

 

  95   Fri Jul 24 16:25:06 2020 Alex MDaily Update 7/24/20
Name Update Plans for Monday
Alex M    
Alex P    
Eliot    
Leo    
Ryan    
Evelyn    
Ben    
Ethan    

 

  94   Thu Jul 23 16:44:05 2020 Alex MDaily Update 7/23/20
Name Update Plans for Tomorrow
Alex M

Leo and I continued working on the roulette algorithm for the asymmetric bicone to try to get the evolved generations to match the original and database ones. We went through the mutation part of the algorithm and made sure we were rrunning all of the random number sequences in the correct order (for example, we need to make sure that if we define variables A and B from a random number generator, that in both cases we define A first, then B). We also had to make sure that we were using these random sequences the same number of times (for example, we don't want to define A once in the original/database versions and twice in the asymmetric version when the asymmetric version is set to evolve symmetric antennas--this puts the random number generator "off sequence" relative to how it is in the original/database version). We tested this with the gen 0 DNA and effective volumes (which matched with the results from the original/database runs) to evolve generation 1 and got it to match. I'm currently running the loop to test this over multiple generations.

Julie and I met with Ben to talk about AREA. Yesterday, Ben was able to generate the 0th generation of individuals and then run AraSim from a job to get effective volumes. Today, we focused on editing the scripts to work for OSC job submissions (he wrote the one he used yesterday; we modified the main script today and will continue to do so). We edited it so that we could submit the main script as a job which then submits other jobs for the arasim portion and waits for those jobs to finish before continuing on (since it needs those effective volumes for its fitness score). We're going to keep incrementally fixing the main script so that it can run over multiple generations as a job submission without errors.

I have a doctor's appointment in the morning, but maybe Leo can continue my current run. Once it's done, optimally we would work with Julie to get everything merged so that we can start a real run (we also have to implement the changes I outlined in the ELOG post a couple days ago before we do a real run/merge--most of those are pretty simple).

Julie and I will take a look at the paperclip script Ryan's been writing to see if we can help him figure out why the roulette algorithm is giving such worse fitness scores than the tournament algorithm (~ fact of 2 worse). 

Alex P    
Eliot    
Leo Alex covered it above for the most part. I just worked with him today trying to correct roulette so we get the same DNA for gen 1. Just to reiterate, the last step that was hanging us up was making sure the new GA used the random number generator the same amount of times and in the same order as the old GA. After that, Alex started another run to make sure everything is running smoothly.  Tomorrow, Alex and I will make sure the results for the first few generations match. Then, Alex, Julie and I will move on to merging.
Evelyn    
Ryan    
Ben    
Ethan    

 

  93   Wed Jul 22 16:00:18 2020 Alex MDaily Update 7/21/20
Name Update Plans for Tomorrow
Alex M Leo and I worked on the roulette algorithm to figure out why the new individuals being formed are different in the asymmetric bicone version of the loop than the original and database versions. We made some fixes, but we came across a complicated problem. Essentially, we think that the difference is coming down to the different number of times the random number generator is being called. Oddly, we can get the lengths that are generated to be the same. But getting all of the genes to be the same would require substantial reworking of the structure of the roulette algorithm and how to do it isn't obvious. We can keep trying to figure it out, but the restructuring was important to allow the mutations to occur on either chromosome (vs in the original and database versions, where we just have one chromosome to mutate, here we need to allow for more mutations since we have up to 6 genes). In principle though, I feel like this is possible, just difficult and requires substantial rewriting. I'll keep looking at the roulette algorithm to see how we can get the same new individuals as the previous two runs. Julie and I were also planning on meeting with Ben about AREA to better understand how to run it properly, 
Alex P    
Eliot    
Leo    
Evelyn    
Ryan I fixed the bugs that I was having yesterday and the algorithm should run more properly. I also added functionality for sending certain parts per ten individuals to either tournament or roulette. However, neither function is getting "optimized" results by 100 gens (though the tournament is significantly closer than roulette in isolation) with the highest fitness score I have been able to get was ~8.65. But, I also do not know what the theoretical max fitness score, given the parameters, would be.  Find out what an optimized fitness score's value would be so I know how close I am to achieving that. Run preliminary tests to see what combinations work best for now.
Ben    
Ethan    

 

  92   Tue Jul 21 17:01:58 2020 Alex MDaily Update 7/21/20
Name Update Plans for tomorrow
Alex M I replaced AraSim on Eliot's user with the one we have on the shared space since I wasn't able to compile his yesterday. It compiled correctly and I ran the loop but got the same results from last week (effective volumes that differed from the ones we got in the original and database test runs). I found one potential error in the seed we were passing to AraSim from the loop, so I'm currently running with that fix. I'm hopeful, but not convinved it will fix things because the setup.txt files on each version of AraSim looked the same before I made this fix. Regardless of whether or not it fixes the problem, it was a problem so it was important to run with that fix. This also gives me another thing to add to the list of changes to make before doing a real run. You can find the list below. I'll continue this run for 4-5 generations if it looks like it's working just to confirm that we're getting agreement with the previous runs. If it agrees, I can turn my attention to either merging or doing a real run. I can do a real run without merging, but it depends on if Amy wants me to merge first or not. Eliot gave me his account info for OSC and github so I should be able to merge correctly (hopefully I can meet with Julie over this so we can make sure we don't have a problem) but it might take me some time to resolve the conflicts.
Alex P    
Eliot    
Leo    
Evelyn    
Ryan Worked on rewriting certain parts of the paperclips code so that it runs better. Fix the bugs in the code.
Ben    
Ethan    

Here's the list of changes to make when doing a real run (undo some of these when doing a test run):

1. Change the separation distance from 0.05 cm to 2-3 cm.

2. Remove the seed in AraSim by changing the setup.txt file so that Random_Mode = 1 instead of 0.

3. Add noise to AraSim (unless Amy says not to?) by changing the setup.txt file so that Trig_Analysis_Mode = 0 (or whatever the setting is--see the comments).

4. Make sure all of the frequency lists are the same! I think this has largely been resolved, but basically there was a time when the frequencies we were using differed from those used by AraSim for the actual bicone. We changed our lists to agree with the AraSim one, but I think there could be a few lists floaitng around (potentially just commented out) that I'm going to want to take our or correct.

5. Remove the seeds from the roulette algortihm. To do this, search for where "seed" is used and comment out the one that has 1 as an argument and comment in the one that uses time(0). Also, do the same for srand().

6. Fix the exponent in the calculation of the standard deviation of the genes in the roulette algorithm. Right now it has an integer division error, so the exponent becomes 0 leading to all the sigmas being 1. This is an easy fix--I'll just change 1/2 to 1.0/2.0.

I haven't made these changes yet because we are testing and want to confirm that we get the same results from the asymmetric version with the original and database versions. Since those didn't have these fixes, I haven't put them into the asymmetric version yet either.

  91   Mon Jul 20 17:01:35 2020 Alex MDaily Update 7/20/20
Name Update Plans for tomorrow
Alex M

The arasim jobs I submitted over the weekend kept failing. I've been looking for the cause but I can't pinpoint it right now. The issue arose on Friday when I overwrote the version of Report.cc on Eliot's user with the one we have on the databse branch (but I don't think there were realy differences aside from comments). Before I had done this, we were getting effective volumes that differed from the ones we got on the database branch. Now, the araSim jobs are just failing after 5 seconds of running. And now I'm getting an error when I try to recompile AraSim (I might need Eliot to do this?). 

I tried getting an interactive job so I could confirm that things are still working on the database branch, but I couldn't get it because it was blocked. I think that was because we had too many concurrent jobs running, which has happened a couple times over the past week-week and a half or so.

I need to track down why these AraSim jobs are failing. Besides maybe needing Eliot to make AraSim, one difference I noticed is that it appears we are sourcing Lauren's version of ANITA build tools rather than the one on the shared space. But I couldn't test this because I need to recompile AraSim. 
Alex P    
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

  90   Fri Jul 17 18:09:16 2020 Alex MDaily Update 7/17/20
Name Update Plans for Monday
Alex M

We may have found the error in the asymmetric bicone. It appears there may have been two problems. First, the setup for the simulation_PEC.xmacro script in the asymmetric version appears to have been slightly different in that the positions of the cones, relative to the positions of the coordinate systems, are different from in the other versions of the loop. This was giving different uan and gain files than the previous runs did. We fixed this, but it revealed another potential issue: in order to evolve the separation distance, we need to make it so that the coordinate systems use the separation genes. This wasn't implemented in the asymmetric version, so there would have always been a disparity in the position of the cones relative to their coordinate systems when compared to the database version of the simulation_PEC.xmacro. I have a work around for when we don't evolve the separation distance, but if we want to evolve it we need to change this script.

Second, the version of Report.cc in AraSim on Eliot's user differed from the one in the database version. The other files agreed, so I copied our version into his directory and started a run with that. It's running now and should take ~1 hour before I can see if this has fully fixed the issue.

I might be out on Monday, but my main goal for next week is to see if the fixes we implemented today resolve the differences in effective volumes and evolved parameters. Once we have them in agreement, we can start a real run on the database version of the loop to get symmetric data for the paper. While that happens, we'll need to try fixing the asymmetric simulation_PEC script so that it can use the separation distances properly. Then we can test that again using those separation distance variables (I used a hardcoded value) to make sure we get correct results. After that we can merge the asymmetric branch with the database branch and then the database branch with master and get data for the asymmetric version of the loop.
Alex P    
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

  89   Thu Jul 16 15:18:32 2020 Alex PattonDaily Update 7/16/20
Name Update Plans for Tomorrow
Alex M

(See below the table for a review of the past couple of days since ELOG has been down.)
We may have found what was causing the error in Eliot and Leo's version. They were getting 0 effective volumes. I edited their output macroskeletons to use pro grid (I figured it was the default setting, but it looks like not). This seems to have fixed the issue with their .uan files having all 0s and 180s for the phase and -300 gain. However, it wasn't writing to the vEffective.csv and fitnessScores.csv files correctly. We realized they may have needed to recompile. We did that and ran a preliminary tset, where we got some promising results. The effective volumes and fitness scores seem to have been read out and plotted correctly, but they didn't appear to match the previous two runs Alex P and I did. That might be because we were messing around with the save state sloppily. Currently, Eliot is rerunning from the beginning with the intention of seeing if it will go all the way through generation 0 smoothly. From there, we'll need to compare the effective volumes and fitness scores with the previous two runs Alex P and I did (although I can confirm that the generation 0 DNA matches). Then we'll need to let it run for a few more generations to make sure it evolves the same individuals those two previous runs evolved.

If it looks like these fixes worked and the effective volumes are being made correctly and the same individuals are evolved as in the previous two runs Alex P and I did, then we'll be ready to start merging. The first step will be to fix a merge conflict on the asymmetric bicone branch. Then, we'll have to carefully merge and resolve merge conflicts. The order should be that the asymmetric bicone branch merges onto the database branch, which will then merge onto the master branch. Once that's done, we'll be able to do a proper run.

Alex P Worked with Alex, Eliot, and Leo to fix an error on Eliot and Leo's branch since we got both the normal and database version working on the Alex's branch. Had some problems with 0 vEffectives and saw that XF was giving 0 gains so searched through for a while to see what was different and had to enable PrOGrid, and then that made the vEffectives nonzero but it still seemed like they might have been too high. Get Eliot/Leo's branch working hopefully have test run overnight that shows that and then merge tomorrow is the plan.
Eliot    
Leo Like both Alexs said, Eliot and I worked with them to get our version to get the same results as their version. The main problem we worked on were the 0 vEffectives and fitness scores. We realized that the fitness scores and vEffectives were printing to the terminal, but not to the plots or .csv files. We check the fitness function called in the loop and it turned out we compliled to a wrong version. After recompiling the fitness score correctly Eliot started a new run and it is currently running over night. Tomorrow, we will take a look at Eliot's run to see how it did and find any other areas that may cause for different results between our's and the Alexs' runs.
Evelyn    
Ryan    
Ben    
Ethan Worked with Ben on running AraSim and fixing errors it would output  

Review of the past two days (wrt the bicone loop) since ELOG has been down:
Alex P and I were able to fix errors in the database version of the loop. It now evolves the same individuals as the original version (when using seeds). We want to test the asymmetric version, but we ran into some errors. First, we needed to add in the cutoff length and the change in Detector.cc to set negative gains equal to 0. Once we did that, we tried running but found some more errors. Specifically, the effective volumes coming from AraSim were all 0. We may have fixed the error today, but we're waiting for the run to finish the 0th generation to be able to tell.

 

  Draft   Mon Jul 13 15:35:06 2020 Alex PattonDaily Update 7/13/20
Name Update Plans for Tomorrow
Alex M

 

 

Alex P

The name of this run is Data_Base_Test_7_10.

The name of the previous run we are comparing against is Length_Cutoff_Test_3.

 
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

  Draft   Mon Jul 13 15:34:40 2020 Alex MDaily Update 7/13/20
Name Update Plans for Tomorrow
Alex M

Alex and I continued running the loop for the database test. We ran into an error over the weekend that was affecting generations after gen 0. Alex fixed it this morning and continued the run. 

The goal of this run is to test the database. We are comparing it to the previous run we did last week to make sure that we get the same individuals. We're using the same parameters as the previous run: NPOP of 8, separation distance of 0.05 cm, and the same roulette algorithm (AKA the same seeds). In principle we should generate the same DNA for the individuals. 

Starting in generation 2, we have a divergence--one of the individuals is different from generation 2 of the previous run. We think this is because there is noise in AraSim (I don't think we can turn the noise off when we're using the effective volume). This makes the probabilities of choosing each individual different and allows different ones to be chosen even though the random number being selected is the same. Oveall it looks ok and we're going to keep the run going to see if it converges to the same individuals as the previous run after a few more generations.

I also wrote a bit in the paper. I took a look at the paper Amy sent on the effective volumes to try to understand it better. I think I understand it, but I'm trying to see how the equation we used in AREA in the proceeding is related (what the weights represent). 

We'll try finishing up this run and doing Eliot and Leo's run. If we can get results fast, we can start merging. Our intention is to start a real run on Wednesday. That would likely take ~1.5 days.
Alex P

I made a fix to the database over the weekend when I noticed it was incorrectly counting the array indexes for counting failures. And then I found an error in our output.xmacro generation when making one for the database with the simulation number fix and that xmacro wasn't using the right bounds. We got the database version working through multiple generations. On the second generation the individuals matched exactly to our previous run except one individual. Looking at the fitness scores of the previous run, the parent individual in the previous generation had a fitness score of .18 compared to 4's of other parents, so it's reasonable that it wouldn't get picked from another run of the algorithm. While the GA is seeded so that it makes the same changes when it picks the same parent individuals, the fitness scores vary slightly between these two runs which alter how the parent individuals get picked especially when it comes to smaller fitness scores like this. 
Also fixed an issue on Eliot and Leo's copy of AraSim, the extrapolation issue we found earlier hadn't been implemented on their branch so to make sure all the tests before merging were accurate we made that change.

The name of this run is Data_Base_Test_7_10.

The name of the previous run we are comparing against is Length_Cutoff_Test_3.

Continue running this overnight to get results and hopefully start merging tomorrow or at least start the process of setting up for the merge and finishing up any of these runs.
Eliot Began a final test run with constant separation to ensure 2 chromosome loop is working before we merge. Stopped during gen 0 to implement progrid in arasim. Thanks Alex M! Continued the run from just before arasim. Had very slow progress due to bad wifi connection. I kept getting kicked off OSC! So far everything looks good but wifi made for a shotty test at best. Name is FERSTL_20200713_PREMERGE_TEST. Lastly, commited one last time before we merge. Had some issues with that as always but believe I have it worked out. Will try to run a couple more gens on that run and begin merging with the Alexs.
Leo    
Evelyn    
Ryan Created a temporary mutation function to test to see if the convergence problem from Friday would be resolved. For the most part, it did resolve the problem and the function has not converged onto a single paperclip and the fitness scored being produced are higher than before. However, I noticed that in test runs with on average greater than ten individuals (usually) the individuals being chosen are the same every run regardless of fitness scores and it seems to be causing the scores to stall out. for example in a run of 100 generations the 90th-100th generations would only pick the 0th and 1st individual for all ten chosen. Even when seeding the random number generator, this appears to be happening and I am not sure why. Some runs with higher chances of mutations seemed to have this effect happen later than ones with low mutation chance but so far this just seems like a correlation and not causation.  Fix the aforementioned issue. Then, rework the mutation function to more closely model the one in bicone's roulette algorithm. 
Ben    
Ethan    

 

  86   Fri Jul 10 16:35:26 2020 Alex MDaily Update 7/10/20
Name Update Plans for Monday
Alex M

Yesterday we started a run of the database version of the loop. The goal was to use it to replicate the results from the run we finished yesterday using the same parameters (NPOP=8, SEEDS=10, bicone separation = 0.05 cm). We initially ran into problems with the databse which we fixed this morning. We successfully completed the 0th generation, but then the .uan files for the next generation weren't created properly. Alex and I will try to resolve this. Amy suggested we only need to run 6-7 generations to confirm that we get the same results as from the previous run. The 0th generation agreed with the 0th generation of the previous run (in terms of DNA; the effective volume/fitness score plots looked similar, but there is slight room for noise in AraSim so the exact values are slightly different; but overall they look very similar). I also confirmed that the generation DNA is the same in generation 1 of the current database run as in the previous run.

The name of this run is Data_Base_Test_7_10.

The name of the previous run we are comparing against is Length_Cutoff_Test_3.

The top priority right now needs to be with fixing the error in the database version that is causing the uan files to be made incorrectly. Once that is fixed, we can continue the run and confirm that we get the same results After that, we'll have Eliot and Leo run their version using the same parameters to confirm that they get the same results as the previous two runs. From there, we'll merge the branches and begin a real run.

The first real run will use NPOP=8, 3 dimensions (LRT), a separation distance of 3 cm, and will run for up to 15 generations. We'll also fix the issue of the mutation standard deviation (see yesterday's update for the three differences between our current runs and the future real runs). 

Our goal is to get as much real data as possible next week. I'm confident that we can have at least one with 3 dimensions (LRT) done by next Friday (we'll shoot for 15 generations, but if it seems to converge between 10-15 we can stop it). 

If we can finish that run, we can start another run using 4 dimensions, where we add an option to make the bicone assymetric in length (L1L2RT). These are the runs we're hoping to use in the paper.

Alex P    
Eliot    
Leo Today we looked at the results of our last run. This run consisted of 8 individuals and was set at 20 generations, but we just wanted to see how far it would evolve. We noticed that the error came from LRTS.py when we need to reshape the arrays from gensData.py in order to plot them. The error said that the array couldn't be reshaped because the new array's dimensions were too small. After digging around and rerunning with past save states, we were thinking that the issue wasn't with the code, but was actually an issue with generation the loop said it was on. For instance if we were on gen 5, LRTS thought we were on 4. Eliot was pretty sure this was because we had been interupted during part of our run, so Leo gave him the benefit of the doubt and decided to run again. This time we only ran 3 individuals up to the 1st generation, just to make sure the plots were working. Leo was running, making sure not to have any interuptions, and indeed all the plotting softwares worked. So, to the best of our knowledge our version of the loop is ready to go. Next week we are just waiting for the Alexs to finish up with their testing so we can start merging. We didn't have any plans to work on outside of that.
Evelyn    
Ryan Finished the crossover function for Paperclips and ran a few tests for the roulette + crossover. Tests seem to show that the paperclips quickly (between 3-5 generations ) converge to become the same paperclip and fitness scores (determined by z-curl) dropped off after the second generation. This is most likely due to the fact that currently there is no form of gene mutations written into the crossover function for repopulation and so the angles the segments can have are locked from the first selection. However, I am not 100% certain on this and there could just be a hidden error somewhere as at times in some (not all ) of the tests I did there were times where the roulette function passed many of the same paperclip to the next generation, therefore decreasing the size of the gene pool. I need to do further tests to be certain of one or the other but otherwise, everything seems to be working as intended.    The next step I plan on taking is creating a mutation function in effort to make the gene pool larger. It is likely that I will look at the bicone's roulette program to model this mutation but I am considering writing a simple one first just to run tests on the effect on the diversity. After this step is complete, I will move on to creating a function that is able to send certain amounts of the population to the tournament and the rest to roulette to see what mix gives the best results. I also as a pre-step to this may take the existing algorithms in paperclips and re-write them as functions rather than loops in main to make the passing of different parts easier and faster. 
Ben    
Ethan Continued documenting AREA project in google doc. Worked with Ben on getting AraSim running and fixing errors. Meeting with Ben to continue on AREA project. We may try to get AraSim run the children in parallel to make it go faster as it takes a very large amount of time currently.

 

  85   Thu Jul 9 16:54:27 2020 Alex MDaily Update 7/9/20
Name Update Plans for Tomorrow
Alex M

Finished running the loop for 15 generations. The last plots are on Dropbox under Length_Cutoff_Test_3. There are three things to fix before running this version of the loop again. See below the table.

We started running the next step, which is the database version. 

Julie, Ben, Ethan, and I all met to talk about AREA. We started going through the code to understand it, but we're stuck because we don't know if AraSim Lite is actually in the directory or not.

I started rewriting the AREA section.

I'll keep the run going, but I might have to stop it and look for bugs if the evolution doesn't track with the previous run. We named this one Data_Base_Test_7_9.

Alex P    
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

Three things to change before doing the next symmetric run (w/o database):

1. Change how the mutation is done. We have at least a partial solution to this--the standard deviations were all 1 due to type errors in c++. We already have a fix for this.

2. The bicone separation distance was too small (0.05 cm). We should increase it to 2-3 cm to represent an actual buildable bicone.

3. We kept the random number seeds in. This isn't a bug, but it's something we need to remember to change before we run this again.

  84   Wed Jul 8 15:09:42 2020 Alex PattonDaily Update 7/8/20
Name Update for Today Plans for Tomorrow
Alex M

Continued the run from yesterday. Alex P and I applied the changes we made to the bash script for fixing the bugs we found in the simulation number to the database version. Once we get 15 generations of data for this run we'll start testing the database version. Once that works we'll have Eliot and Leo run their version with only 3 genes and if we get the same genes all around we'll be able to merge the asymmetric branch with the database branch and then merge with master. I also fixed up a bug I found in one of the plotting programs that meant it was missing the first individual, it should be good now.

Ryan and I talked a bit about how to apply crossover and mutation to the paperclip. I'm not sure that crossover makes sense, but I think it's possible. He's going to start by doing crossover of the chromosomes and then when that's working he can try crossing over the genes (this is where I'm not sure things make sense, but who knows). Then he can implement mutation in that function.

Julie and I spoke with Ben about AREA and started helping him siftt through all the files. We're going to meet with Ethan tomorrow to catch him up to speed and start reviewing the bash script that runs all of AREA.

Finish this run, test the database. I'll meet with Julie, Ben, and Ethan to talk about AREA. Also, Eliot and Leo found a potential issue in the roulette algorithm that I asked them to look at, so we might try making a fix in there and see if that allows our mutations to be more reasonable. Alex and I are going to have to meet with Eliot and Leo soon so we can all work together on merging our branches and resolving merge conflicts.

 

Alex P Made a version of my c++ programs that detect whether an individual matches the database and logs that/writes to the database in a way that allows the number of genes to be a variable so that it can be compatible with new antenna designs. Then set to fix the scripts that used the database to fix the error of the right simulation numbers while continuing the current run so that we can test if the database version gives the same results and then will start running the database version and make sure it is good before we merge. Run database test and if it has any differences or bugs from the original, fix those before we merge. Also have Eliot and Leo run thiers but with just three parameters so that we can test and make sure the accuracy between all versions is the same and none have bugs present before we merge.
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

  83   Tue Jul 7 14:39:12 2020 Alex PattonDaily Update 7/7/20
Name Update for Today Plans for Tomorrow
Alex M

Found a bug while running the loop, fixed it and starting running again. Added a few things to the paper.

Alex and I will keep the loop running tomorrow. We're gonna try to meet with Eliot and Leo to work on implementing the bug fixes we've made into their version of the loop, then merge it with our branch. We need to add it to the database version too, and then after all of that we can merge with the master branch.
Alex P Now that length constraint is working properly ran a few generations and found a small error with the mutation calculation that allowed for the theta to go below zero, fixed that change and started a run to have a bugless run. Continue this run for 15 generations or so and then work on the merging process with Eliot and Leo's branch and then once that is working merge with master once we have confirmed the absence of bugs
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

  82   Mon Jul 6 16:49:21 2020 Alex MDaily Update
Name Update for Today Plans for Tomorrow
Alex M

Fixed up a few more errors in the new roulette algorithm with the length cut. Started a run to test the loop. 

Edited and added a few things to the paper. 

My goal is to get a few generations done over night to look at in the morning. If it looks like things are working out, we're going to go ahead and start the process of merging (by adding our edits in to the database version fitst, then Eliot and Leo's asymmetric version, then merging on Wednesday hopefully).
Alex P Worked with Alex M to have our length test run and also helped ben with an issue with his code when submitted as a job Look at run in the morning and if it is good start merging and continuing to test the database feature on a variable amount of genes
Eliot    
Leo    
Evelyn    
Ryan Continued refining the Roulette function in Paperclips. Now negative or zero fitness scores cannot be passed along and the roulette can be isolated from algorithm 1 in the code.  For now, I am continuing to have the last two algorithms mutate for the rest of the individuals but am planning to write in the roulette to create new individuals that are mutated from the chosen. Once I complete this, I plan of coding in a way for user input to decide how many individuals are sent to each algorithm for selection and mutation.
Ben    
Ethan    

 

  81   Thu Jul 2 23:13:05 2020 Amy A useful reference on bicone antennas

I found this datasheet on bicone antennas, that is a useful reference for seeing the relationship between bicone dimensions and bandwidth.  From these it looks like the lower end of the band is at about f_low=c/(4*L_E), where L_E is the entire length of the antenna (twice the length of one cone), although we'd expect the peak gain to be where a quarter wavelength is just one of the cones (and the figure may roughly support that).

The attached file comes from this website:

https://www.ramayes.com/Biconical_Antennas.htm

 

 

 

 

Attachment 1: biconall.pdf
  80   Thu Jul 2 15:03:39 2020 Alex PattonDaily Update 7/2/20
Name Today's Update Plans for Tomorrow
Alex M

Worked with Alex to change the roulette algorithm to implement a cut on the minimum length for the Antennas. Amy showed that we don't want to generate antennas which are shorter than 37.5 cm in length (for each cone, so a total of 75 cm all together) because anything shorter than that won't be reliably simulated in XF for our frequency range. To do this, we made the roulette algorithm reselect individuals in the 0th generation if they were below this length. When it's making new individuals for the next generation, we made it so that the algorithm doesn't apply mutations that would make the antenna smaller than the minimum length (but we may revisit this with other methods, like letting the individual die if its below that length).

Spoke to Ben about AREA. He can run it, but there are some errors, and it looks like the job was killed when we tried submitting it to the queue. We'll have to see if we can track down some of the errors.

Alex and I will try to run the loop using our changes to the roulette algorithm and see what the new individuals look like and if the effective volumes are reasonable.
Alex P Worked on converting the c++ programs I made for database to work with a variable amount of genes rather than just LRT. After that Amy met with Alex and me and discussed the proper length to limit the antennas to and then worked with Alex to put a clamp within the roulette algorithm on both the initial generation and the generation of lengths through mutation. Then deciding to just cut the individuals that have too low lengths and discussing how that would be implemented. Will continue to implement and test the changes to clamping the length by eliminating low length individuals and once that is sorted start working on being able to make our changes work on other branches too so we can start to merge.
Eliot    
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

  79   Wed Jul 1 16:18:35 2020 Alex MDaily Update 7/1/20
Name Today's Update Plans for Tomorrow
Alex M Worked to make the frequency plots up to ~2.5 GHz. Amy said we should put a cut off for the length of the antennas based on the minimum frequency, but right now I'm not sure how to find what that minimum length should be based on the frequency (we should be using the lowest frequency for this calculation though, since it corresponds to the highest minimum length). I'll keep looking at how to figure out the minimum length and implement it into the loop.
Alex P    
Eliot Implemented the asymmetric radius and separation parameter throughout the rest of the loop. Began a first test. Will check on and fix any errors and either tonight or tomorrow do a run for Alex to see about length convergence.
Leo    
Evelyn Continued working on code academy, got about 3/4 of the way done  Try to finish the code academy class before my free trial runs out! 
Ryan Fixed the issues in the roulette function from Monday and integrated it into the rest of the code. seems to be running fine so far.  Next step is to code in a user input for how many of ten individuals get selected by tournament vs roulette. Once this is complete I will try to run some tests and probably try to have the results output to a file to save results for comparisons.  
Ben    
Ethan    

 

  78   Tue Jun 30 17:12:32 2020 Alex MDaily Update 6/30/20
Name Update for Today Plans for Tomorrow
Alex M Continued looking in XF for why the frequency where two antennas separated by a small amount give the same gain. I made a script which plots the gain at each frequency for a chosen number of individuals at a specific polar angle and used it on two antennas, one with a separation of 0.01 cm and one with a separation of 0.005 cm. The plots look similar, but there is some difference--see the genstudents slack. I'll continue to work on figuring out the frequency where these antennas start to give the same gain. Our ultimate goal is to find a minimum length for the antennas to cut off at so that we don't evolve antennas that are too small.
Alex P    
Eliot Made little progress on the separation gene throughout the loop, however we know where all we need to make changes(I think).  Should be able to make significant strides in regard to separation throughout the loop(ie plotting, fitness function, etc). Hopefully can also begin testing and debugging.
Leo    
Evelyn    
Ryan    
Ben    
Ethan    

 

  77   Mon Jun 29 15:57:41 2020 Alex PattonDaily Update 6/29/20
Name Today's Update Plans for Tomorrow
Alex M Worked with Alex P to look at the different gain patterns for antennas with different separation distances. We found that there wasn't a clear frequency where they started to agree--looking at the average frequency gain plots we sent on slack, they look very different. We're trying to resimulate them with some higher frequencies to see the pattern more clearly and find where they start to agree. I should be able to finish making those frequency plots in the morning. I think I'm going to try spending some time with Karoo tomorrow and see what Julie's been able to figure out.
Alex P Looking at differences between small antennas and how the spacing affected their gains to see where differences occurred and saw at 350 MHz is last one where bigger spacing is better and after that it seems like the smaller spacing is better at 366.7 MHz and above. We checked and it actually flips back and forth between which is better and couldn't find a real pattern there. Switched to make an average gain plot for each frequency to see a pattern in the average gain since the 3D graphs use color and sometimes it can be hard to tell by how much the differences are. Continue to work with the spacing to find which frequencies cause problems for antennas according to their sizes.
Eliot Implemented the option of an asymmetric radius within the GA. Now, our new gene (separation) is the only gene without the possible asymmetry. This is because an asymmetric separation wouldn't do anything as the separation in XF(ie its offset from the origin) does not constitue a physical significance in AraSim.  Leo and I will begin to implement the separation gene throughout the remainder of the loop.
Leo    
Ryan Continued working on the roulette function for paperclips1.0.1.cpp. Ran into some issues with returning an array. Debug the roulette function, maybe test if I get everything working and sent to the correct places.
Evelyn    
Ben    
Ethan    

 

ELOG V3.1.5-fc6679b