build_gnn_metadata Subroutine

subroutine build_gnn_metadata(layer, prefix, metadata, num_meta)

Build the metadata entry required to reconstruct a GNN layer.

Arguments

Type IntentOptional Attributes Name
class(base_layer_type), intent(in) :: layer

GNN layer instance

character(len=*), intent(in) :: prefix

Node prefix used for this exported layer

character(len=4096), intent(inout) :: metadata(:)

Metadata strings to append to

integer, intent(inout) :: num_meta

Number of metadata entries


Source Code

  subroutine build_gnn_metadata(layer, prefix, metadata, num_meta)
    !! Build the metadata entry required to reconstruct a GNN layer.
    implicit none

    ! Arguments
    class(base_layer_type), intent(in) :: layer
    !! GNN layer instance
    character(*), intent(in) :: prefix
    !! Node prefix used for this exported layer
    character(4096), intent(inout) :: metadata(:)
    !! Metadata strings to append to
    integer, intent(inout) :: num_meta
    !! Number of metadata entries

    ! Local variables
    type(onnx_attribute_type), allocatable :: attrs(:)
    !! Layer attributes returned by polymorphic dispatch
    integer :: i
    !! Loop index
    character(2048) :: value_str
    !! Semicolon-separated metadata payload

    attrs = layer%get_attributes()
    if(.not.allocated(attrs) .or. size(attrs) .eq. 0) return

    value_str = 'subtype=' // trim(adjustl(layer%name))
    do i = 1, size(attrs)
       value_str = trim(value_str) // ';' // trim(attrs(i)%name) // '=' // &
            trim(adjustl(attrs(i)%val))
    end do

    num_meta = num_meta + 1
    write(metadata(num_meta), '(A)') &
         '      {"key": "athena_gnn_' // trim(prefix) // &
         '", "value": "' // trim(value_str) // '"}'

  end subroutine build_gnn_metadata