< Summary

Information
Class: Intentum.AI.MultiModal.MultiModalFusion
Assembly: Intentum.AI
File(s): /home/runner/work/Intentum/Intentum/src/Intentum.AI/MultiModal/MultiModalFusion.cs
Line coverage
100%
Covered lines: 27
Uncovered lines: 0
Coverable lines: 27
Total lines: 38
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
Fuse(...)100%66100%

File(s)

/home/runner/work/Intentum/Intentum/src/Intentum.AI/MultiModal/MultiModalFusion.cs

#LineLine coverage
 1namespace Intentum.AI.MultiModal;
 2
 3public static class MultiModalFusion
 4{
 5    public static float[] Fuse(float[] behaviorEmbedding, IReadOnlyList<MultiModalInput> additionalInputs)
 56    {
 57        ArgumentNullException.ThrowIfNull(behaviorEmbedding);
 8
 49        if (additionalInputs.Count == 0)
 210            return behaviorEmbedding;
 11
 212        var modalityEmbeddings = additionalInputs
 313            .Where(i => i.Embedding != null)
 314            .GroupBy(i => i.Modality)
 215            .Select(g =>
 216            {
 517                var embeddings = g.Select(i => i.Embedding!).ToList();
 218                var avg = new float[embeddings[0].Length];
 1219                for (int j = 0; j < avg.Length; j++)
 1020                    avg[j] = embeddings.Average(e => e[j]);
 221                return avg;
 222            })
 223            .ToList();
 24
 425        var totalLength = behaviorEmbedding.Length + modalityEmbeddings.Sum(e => e.Length);
 226        var result = new float[totalLength];
 227        behaviorEmbedding.CopyTo(result, 0);
 28
 229        var offset = behaviorEmbedding.Length;
 1030        foreach (var emb in modalityEmbeddings)
 231        {
 232            emb.CopyTo(result, offset);
 233            offset += emb.Length;
 234        }
 35
 236        return result;
 437    }
 38}