correlation_distance_utilities.f90 Source File

This module defines a class to calculate the correlation distance between kohonen prototypes


This file depends on

sourcefile~~correlation_distance_utilities.f90~~EfferentGraph sourcefile~correlation_distance_utilities.f90 correlation_distance_utilities.f90 sourcefile~distance_base_utilities.f90 distance_base_utilities.f90 sourcefile~correlation_distance_utilities.f90->sourcefile~distance_base_utilities.f90 sourcefile~general_utilities.f90 general_utilities.f90 sourcefile~correlation_distance_utilities.f90->sourcefile~general_utilities.f90 sourcefile~precision_utilities.f90 precision_utilities.f90 sourcefile~correlation_distance_utilities.f90->sourcefile~precision_utilities.f90 sourcefile~distance_base_utilities.f90->sourcefile~precision_utilities.f90 sourcefile~general_utilities.f90->sourcefile~precision_utilities.f90

Files dependent on this one

sourcefile~~correlation_distance_utilities.f90~~AfferentGraph sourcefile~correlation_distance_utilities.f90 correlation_distance_utilities.f90 sourcefile~factory_distance_utilities.f90 factory_distance_utilities.f90 sourcefile~factory_distance_utilities.f90->sourcefile~correlation_distance_utilities.f90 sourcefile~kohonen_layer_utilities.f90 kohonen_layer_utilities.f90 sourcefile~kohonen_layer_utilities.f90->sourcefile~factory_distance_utilities.f90 sourcefile~multilayer_self_organizing_map_utilities.f90 multilayer_self_organizing_map_utilities.f90 sourcefile~multilayer_self_organizing_map_utilities.f90->sourcefile~factory_distance_utilities.f90 sourcefile~self_organizing_map_utilities.f90 self_organizing_map_utilities.f90 sourcefile~self_organizing_map_utilities.f90->sourcefile~factory_distance_utilities.f90 sourcefile~two_level_self_organizing_map_utilities.f90 two_level_self_organizing_map_utilities.f90 sourcefile~two_level_self_organizing_map_utilities.f90->sourcefile~factory_distance_utilities.f90 sourcefile~som_predict_variables.f90 som_predict_variables.f90 sourcefile~som_predict_variables.f90->sourcefile~self_organizing_map_utilities.f90 sourcefile~som_train_variables.f90 som_train_variables.f90 sourcefile~som_train_variables.f90->sourcefile~self_organizing_map_utilities.f90 sourcefile~two_level_som_estimate_variables.f90 two_level_som_estimate_variables.f90 sourcefile~two_level_som_estimate_variables.f90->sourcefile~two_level_self_organizing_map_utilities.f90 sourcefile~two_level_som_train_variables.f90 two_level_som_train_variables.f90 sourcefile~two_level_som_train_variables.f90->sourcefile~two_level_self_organizing_map_utilities.f90

Source Code

!! author: Oscar Garcia-Cabrejo
!! date: 03/16/2025
!! version: 0.1
!! This module defines a class to calculate the correlation distance between kohonen prototypes 
module correlation_distance_utilities
!! This module defines a class to calculate the correlation distance between kohonen prototypes 
    use precision_utilities, only: wp;
    use distance_base_utilities, only: distance_base;
    use general_utilities, only: correlation_coefficient
    !
    implicit none;
    !
    private;
    !
    type,extends(distance_base) :: correlation_distance
    !! Class to calculate the correlation distance
        contains
            procedure,public :: calculate => calculate_correlation_distance
    end type correlation_distance
    !
    public :: correlation_distance;
    !
    contains 
    !========================================================================================
        function calculate_correlation_distance(distance,vector1,vector2) result(d)
    !========================================================================================
    !! Function to calculate the Manhattan distance between vectors
            class(correlation_distance) :: distance
    !! A `Manhattan_distance` object
            real(kind=wp),dimension(:,:),intent(inout) :: vector1,vector2
    !! A real vector
            real(kind=wp) :: d
    !! A real vector
            real(kind=wp),dimension(size(vector1,1)*size(vector1,2)) :: v1,v2
            real(kind=wp) :: mx,my,sdx,sdy
            integer :: nrow,ncol
            !
            nrow=size(vector1,1);
            ncol=size(vector1,2);
            v1=reshape(vector1,[nrow*ncol]);
            v2=reshape(vector2,[nrow*ncol]);
            d=correlation_coefficient(v1,v2);
    !! A real variable with the distance
        end function calculate_correlation_distance

end module correlation_distance_utilities