Compare commits

...

4 commits

Author SHA1 Message Date
Sakimori 850c2e189f
initial readme 2025-08-08 16:30:59 -04:00
Sakimori 40e497297d
moved file declarations to top of script 2025-08-08 16:24:24 -04:00
Sakimori 060d894d6c
added environment details 2025-08-08 16:11:09 -04:00
Sakimori 3e005fc7d6
removed test file 2025-08-08 16:06:40 -04:00
4 changed files with 157 additions and 8 deletions

122
inject_env.yml Normal file
View file

@ -0,0 +1,122 @@
name: inject
channels:
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- _openmp_mutex=5.1=1_gnu
- aom=3.6.0=h6a678d5_0
- blas=1.0=mkl
- brotli-python=1.0.9=py313h6a678d5_9
- bzip2=1.0.8=h5eee18b_6
- c-ares=1.19.1=h5eee18b_0
- ca-certificates=2025.2.25=h06a4308_0
- cairo=1.16.0=he5ede1b_6
- contourpy=1.3.1=py313hdb19cb5_0
- cycler=0.11.0=pyhd3eb1b0_0
- cyrus-sasl=2.1.28=h1110e0f_3
- dav1d=1.2.1=h5eee18b_0
- expat=2.7.1=h6a678d5_0
- fontconfig=2.14.1=h55d465d_3
- fonttools=4.55.3=py313h5eee18b_0
- freetype=2.13.3=h4a9f257_0
- fribidi=1.0.10=h7b6447c_0
- graphite2=1.3.14=h295c915_1
- harfbuzz=10.2.0=hdfddeaa_1
- icu=73.1=h6a678d5_0
- intel-openmp=2023.1.0=hdb19cb5_46306
- jpeg=9e=h5eee18b_3
- kiwisolver=1.4.8=py313h6a678d5_0
- krb5=1.20.1=h143b758_1
- lcms2=2.16=h92b89f2_1
- ld_impl_linux-64=2.40=h12ee557_0
- lerc=4.0.0=h6a678d5_0
- libabseil=20250127.0=cxx17_h6a678d5_0
- libavif=1.1.1=h5eee18b_0
- libcups=2.4.2=h252cb56_2
- libcurl=8.14.1=hc1efc7f_1
- libdeflate=1.22=h5eee18b_0
- libedit=3.1.20230828=h5eee18b_0
- libev=4.33=h7f8727e_1
- libffi=3.4.4=h6a678d5_1
- libgcc-ng=11.2.0=h1234567_1
- libgfortran-ng=11.2.0=h00389a5_1
- libgfortran5=11.2.0=h1234567_1
- libgl=1.7.0=h5eee18b_2
- libglib=2.84.2=h37c7471_0
- libglvnd=1.7.0=h5eee18b_2
- libglx=1.7.0=h5eee18b_2
- libgomp=11.2.0=h1234567_1
- libiconv=1.16=h5eee18b_3
- libkrb5=1.21.3=h520c7b4_3
- libmpdec=4.0.0=h5eee18b_0
- libnghttp2=1.57.0=h2d74bed_0
- libpng=1.6.39=h5eee18b_0
- libpq=17.4=h02b6914_2
- libprotobuf=5.29.3=h3cdef7c_1
- libssh2=1.11.1=h251f7ec_0
- libstdcxx-ng=11.2.0=h1234567_1
- libtiff=4.7.0=hde9077f_0
- libuuid=1.41.5=h5eee18b_0
- libwebp-base=1.3.2=h5eee18b_1
- libxcb=1.17.0=h9b100fa_0
- libxkbcommon=1.9.1=h69220b7_0
- libxml2=2.13.8=hfdd30dd_0
- lmdb=0.9.29=h2531618_0
- lz4-c=1.9.4=h6a678d5_1
- matplotlib=3.10.0=py313h06a4308_1
- matplotlib-base=3.10.0=py313h68cf311_1
- mkl=2023.1.0=h213fc3f_46344
- mkl-service=2.4.0=py313h5eee18b_2
- mkl_fft=1.3.11=py313h5eee18b_0
- mkl_random=1.2.8=py313h06d7b56_0
- mysql=8.4.0=h721767e_2
- ncurses=6.5=h7934f7d_0
- numpy=2.3.1=py313h8d96ed3_0
- numpy-base=2.3.1=py313h8e760e0_0
- openjpeg=2.5.2=h0d4d230_1
- openldap=2.6.4=h42fbc30_0
- openssl=3.0.17=h5eee18b_0
- packaging=25.0=py313h06a4308_0
- pcre2=10.42=hebb0a14_1
- pillow=11.3.0=py313hb1c3d2d_0
- pip=25.1=pyhc872135_2
- pixman=0.40.0=h7f8727e_1
- pthread-stubs=0.3=h0ce48e5_1
- pyparsing=3.2.0=py313h06a4308_0
- pyqt=6.7.1=py313h8dad735_2
- pyqt6-sip=13.9.1=py313h6ce4db3_2
- python=3.13.5=h4612cfd_100_cp313
- python-dateutil=2.9.0post0=py313h06a4308_2
- python_abi=3.13=0_cp313
- qtbase=6.7.3=hdaa5aa8_0
- qtdeclarative=6.7.3=h7934f7d_1
- qtsvg=6.7.3=he4bddd1_1
- qttools=6.7.3=h5a8de97_1
- qtwebchannel=6.7.3=h7934f7d_1
- qtwebsockets=6.7.3=h7934f7d_1
- readline=8.2=h5eee18b_0
- scipy=1.16.0=py313h0cc6016_0
- setuptools=72.1.0=py313h06a4308_0
- sip=6.10.0=py313h6a678d5_0
- six=1.17.0=py313h06a4308_0
- sqlite=3.50.2=hb25bd0a_1
- tbb=2021.8.0=hdb19cb5_0
- tk=8.6.14=h993c535_1
- tornado=6.5.1=py313h5eee18b_0
- tzdata=2025b=h04d1e81_0
- wheel=0.45.1=py313h06a4308_0
- xcb-util=0.4.1=h5eee18b_2
- xcb-util-cursor=0.1.5=h5eee18b_0
- xcb-util-image=0.4.0=h5eee18b_2
- xcb-util-renderutil=0.3.10=h5eee18b_0
- xkeyboard-config=2.44=h5eee18b_0
- xorg-libx11=1.8.12=h9b100fa_1
- xorg-libxau=1.0.12=h9b100fa_0
- xorg-libxdmcp=1.1.5=h9b100fa_0
- xorg-libxext=1.3.6=h9b100fa_0
- xorg-libxrender=0.9.12=h9b100fa_0
- xorg-xorgproto=2024.1=h5eee18b_1
- xz=5.6.4=h5eee18b_1
- zlib=1.2.13=h5eee18b_1
- zstd=1.5.6=hc292b87_0
prefix: /home/dagarwal/miniconda3/envs/inject

30
readme.md Normal file
View file

@ -0,0 +1,30 @@
# Signal injection and testing for GREENBURST
These scripts are developed to:
1) Create and inject bursts of varying DM and width to existing FILTERBANK files (signalgen.py), and
2) Analyze the results of running the resulting files through the GREENBURST pipeline (testanalysis.py).
## Environment
The inject_env.yml file contains the enviroment declaration necessary to run these scripts. On the GREENBURST machine, this enviroment is accessed via `conda activate inject`.
## Running
### Signal Generation
Signalgen has 2 modes - generation and plotting. Generation is the default, while plotting is accessed via the `-p` flag.
Files may be provided in three ways:
- Directly and one at a time, via `-f`
- Through a file containing a list of file paths, via `-l`
- Contained in a directory via `-D`, where Signalgen will act on all `.fil` files in the directory.
The injected signals can be of a specified DM (`-d`) and/or width (`-w`), and the number of samples taken by the `will` package can be adjusted as well (`-n`).
For bulk processing, the `-r` flag should be used to randomize the pulse parameters and output the injected pulse infomation to a timestamped file.
By default, the resulting files will be output to `./out/`, but a different directory may be specified with `-o`. Note that `-p` will always output the plots into the same directory as the source `.fil` file.
### Test Analysis
After running the GREENBURST pipeline using the `-t` flag with stage 3, a `plotOut.txt` file will be output (by default, to `/ldata/dev_tests/repro/`). Provide the timestamped file from Signalgen and this `plotOut.txt` file to Testanalysis by editing the paths at the top of the script, and run the file. Information will be output to the log, and plots will be output to `./out/`.

View file

@ -11,6 +11,9 @@ import pandas as pd
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO) #change for debug prints logging.basicConfig(level=logging.INFO) #change for debug prints
INJECTION_FILE = os.path.join(".","out","2025-07-31T17-25-54.txt")
DETECTION_FILE = os.path.join(".","out","plotOut.txt")
def linesplit(line): def linesplit(line):
""" """
Splits line of file into useful components. Splits line of file into useful components.
@ -49,14 +52,14 @@ detectedDic = {
} }
#load injected data into dataframe #load injected data into dataframe
with open(os.path.join(".","out","2025-07-31T17-25-54.txt"), "r") as file: with open(INJECTION_FILE, "r") as file:
lines = file.readlines() lines = file.readlines()
updateDic(lines, injectedDic) updateDic(lines, injectedDic)
injections = pd.DataFrame(data=injectedDic) #this is our main object for injection data injections = pd.DataFrame(data=injectedDic) #this is our main object for injection data
#load detection data into dataframe #load detection data into dataframe
with open(os.path.join(".","out","plotOut.txt"), "r") as file: with open(DETECTION_FILE, "r") as file:
lines = file.readlines() lines = file.readlines()
updateDic(lines, detectedDic) updateDic(lines, detectedDic)

View file

@ -1,6 +0,0 @@
/minish/keh00032/gb/2025/data_2025-05-05_07-08-36/
/minish/keh00032/gb/2025/data_2025-05-05_07-16-59/
/minish/keh00032/gb/2025/data_2025-05-05_07-25-22/
/minish/keh00032/gb/2025/data_2025-05-05_07-33-46/
/minish/keh00032/gb/2025/data_2025-05-05_07-42-09/
/minish/keh00032/gb/2025/data_2025-05-05_07-50-32/