Hi Frank,

I'm not familiar with how the antenna works exactly, but I'll try to get you 
started on how to modify or create a GriddedField.

A GriddedField consists of the data and the corresponding grids. In the case of 
the antenna_response these are:

print(ws.antenna_response.value.gridnames)
[Polarisation, Frequency, Zenith angle, Azimuth angle]

Since you already use AntennaConstantGaussian1D, the easiest way to inject your 
own data is probably to modify the existing antenna_response:

ws.AntennaConstantGaussian1D(n_za_grid=1, fwhm=1.5)
ws.antenna_response.value.data = np.array(
    [[[[0.00260905], [0.00350429], [0.00465987], [0.00613486], [0.00799636],
       [0.010319], [0.01318377], [0.01667627], [0.02088407], [0.02589336],
       [0.03178475], [0.03862836], [0.04647835], [0.05536716], [0.06529965],
       [0.07624766], [0.08814531], [0.10088555], [0.1143183], [0.12825067],
       [0.14244938], [0.15664572], [0.17054287], [0.18382546], [0.19617099],
       [0.20726262], [0.21680248], [0.22452492], [0.23020879], [0.23368795],
       [0.23485932], [0.23368795], [0.23020879], [0.22452492], [0.21680248],
       [0.20726262], [0.19617099], [0.18382546], [0.17054287], [0.15664572],
       [0.14244938], [0.12825067], [0.1143183], [0.10088555], [0.08814531],
       [0.07624766], [0.06529965], [0.05536716], [0.04647835], [0.03862836],
       [0.03178475], [0.02589336], [0.02088407], [0.01667627], [0.01318377],
       [0.010319], [0.00799636], [0.00613486], [0.00465987], [0.00350429],
       [0.00260905]]]])


Grids can be modified like this:

ws.antenna_response.value.set_grid(ws.antenna_response.value.gridnames.index(
    "Zenith angle"), np.linspace(-2, 2, 61))


After changing the grids or the data, make sure to run a consistency check 
between data and grids:

ws.antenna_response.value.checksize_strict()


To create your own GriddedField4 from scratch, this is what the constructor 
call would look like:

ws.antenna_response = pyarts.arts.GriddedField4(
    gridnames=["Polarisation", "Frequency", "Zenith angle", "Azimuth angle"],
    grids=[
        ["NaN"],  # Polarisation grid
        [-999.],  # Frequency grid
        np.linspace(-1.91097, 1.91097, 61),  # Zenith angle grid
        [0.]  # Azimuth angle grid
    ],
    data=np.array(
        [[[[0.00260905], [0.00350429], [0.00465987], [0.00613486], [0.00799636],
           [0.010319], [0.01318377], [0.01667627], [0.02088407], [0.02589336],
           [0.03178475], [0.03862836], [0.04647835], [0.05536716], [0.06529965],
           [0.07624766], [0.08814531], [0.10088555], [0.1143183], [0.12825067],
           [0.14244938], [0.15664572], [0.17054287], [0.18382546], [0.19617099],
           [0.20726262], [0.21680248], [0.22452492], [0.23020879], [0.23368795],
           [0.23485932], [0.23368795], [0.23020879], [0.22452492], [0.21680248],
           [0.20726262], [0.19617099], [0.18382546], [0.17054287], [0.15664572],
           [0.14244938], [0.12825067], [0.1143183], [0.10088555], [0.08814531],
           [0.07624766], [0.06529965], [0.05536716], [0.04647835], [0.03862836],
           [0.03178475], [0.02589336], [0.02088407], [0.01667627], [0.01318377],
           [0.010319], [0.00799636], [0.00613486], [0.00465987], [0.00350429],
           [0.00260905]]]])
)

ws.antenna_response.value.checksize_strict()

Hope this helps.

Cheers,
Oliver


> On 17 Oct 2022, at 19:06, Werner, Frank (329D) <[email protected]> 
> wrote:
> 
> … just as an update:
>  
> I also tried manually creating a simple 1d pattern with the 
> ‘sensor_responseAntenna’ workspace method:
>  
> ws.sensor_responseAntenna(ws.sensor_response,
>                                   ws.sensor_response_f,
>                                   ws.sensor_response_pol,
>                                   ws.sensor_response_dlos,
>                                   ws.sensor_response_dlos_grid,
>                                   [118750000000],
>                                   [1],
>                                   3,
>                                   1,
>                                   [[0.]],
>                                   
> np.array([[[[0.00260905],[0.00350429],[0.00465987],[0.00613486],[0.00799636],
>                                               [0.010319  
> ],[0.01318377],[0.01667627],[0.02088407],[0.02589336],
>                                               
> [0.03178475],[0.03862836],[0.04647835],[0.05536716],[0.06529965],
>                                               
> [0.07624766],[0.08814531],[0.10088555],[0.1143183 ],[0.12825067],
>                                               
> [0.14244938],[0.15664572],[0.17054287],[0.18382546],[0.19617099],
>                                               
> [0.20726262],[0.21680248],[0.22452492],[0.23020879],[0.23368795],
>                                               
> [0.23485932],[0.23368795],[0.23020879],[0.22452492],[0.21680248],
>                                               
> [0.20726262],[0.19617099],[0.18382546],[0.17054287],[0.15664572],
>                                               
> [0.14244938],[0.12825067],[0.1143183 ],[0.10088555],[0.08814531],
>                                               
> [0.07624766],[0.06529965],[0.05536716],[0.04647835],[0.03862836],
>                                               
> [0.03178475],[0.02589336],[0.02088407],[0.01667627],[0.01318377],
>                                               [0.010319  
> ],[0.00799636],[0.00613486],[0.00465987],[0.00350429],
>                                               [0.00260905]]]],
>                                   0)
> ws.sensor_responseInit()
>  
> But here, I get the error message ‘TypeError: Cannot interpret '0' as a data 
> type’…
>  
> Again, thanks for your help.
> Best wishes,
> Frank
>  
> --
> Frank Werner
> Mail Stop 183-701, Jet Propulsion Laboratory
> 4800 Oak Grove Drive, Pasadena, California 91109, United States
> Phone: +1 818 354-1918
>  
> From: "Werner, Frank (329D)" <[email protected]>
> Date: Monday, October 17, 2022 at 9:42 AM
> To: "[email protected]" <[email protected]>
> Subject: Custom antenna response
>  
> Dear ARTS team,
>  
> After playing around with a 1d Gaussian antenna response (using the workspace 
> variable ‘AntennaConstantGaussian1D’), I now want to set a custom antenna 
> pattern from actual lab measurements.
>  
> I have vectors for the zenith and azimuth angles, as well as a grid of 
> normalized antenna responses for each Stokes vector element. The 
> normalization follows the ARTS behavior, where the integral of the responses 
> over all angle increments is 1.
>  
> Can you guys help me out with correctly using that info in ARTS? I briefly 
> looked at creating a workspace variable named ‘antenna_response’ with 
> ‘GriddedField4’, but somehow the format confuses me. Also, I am pretty sure 
> that this is not enough and there probably are more steps I need to take for 
> ARTS to accept that variable as the antenna pattern.
>  
> Thanks for your help and best wishes,
> Frank




Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to