code: def test_saliency(self, output_seq_1):
      actual = output_seq_1.primary_attributions(printJson=True)
      # print(actual) # This is how to get the expected value. Validated manually then pasted below
      expected = {
          "tokens": [
              {
                  "token": "",
                  "token_id": 352,
                  "is_partial": True,
                  "type": "input",
                  "value": "0.31678662",
                  "position": 0,
              },
              {
                  "token": "",
                  "token_id": 11,
                  "is_partial": True,
                  "type": "input",
                  "value": "0.18056837",
                  "position": 1,
              },
              {
                  "token": "",
                  "token_id": 352,
                  "is_partial": True,
                  "type": "input",
                  "value": "0.37555906",
                  "position": 2,
              },
              {
                  "token": "",
                  "token_id": 11,
                  "is_partial": True,
                  "type": "input",
                  "value": "0.12708597",
                  "position": 3,
              },
              {
                  "token": "",
                  "token_id": 362,
                  "is_partial": True,
                  "type": "output",
                  "value": "0",
                  "position": 4,
              },
          ],
          "attributions": [
              [
                  0.31678661704063416,
                  0.1805683672428131,
                  0.3755590617656708,
                  0.12708596885204315,
              ]
          ],
      }
  
      assert actual == expected
  
imports: from ecco import output
  import pytest
  import torch
  import numpy
  from ecco.output import NMF
  import ecco
label_desc: Use image node_id 3 for calling the TestOutput obj's underlying member method code with example usage: obj.test_saliency(output_seq_1) without return types