parameters: (score, size=4)
return_statement: return tuple(res)
docstring: >>> from rdkit import Chem
    >>> m = Chem.MolFromSmiles('C=CC')
    >>> score=pyScorePath(m, (0, 1, 2), 3)
    >>> ExplainPathScore(score, 3)
    (('C', 1, 0), ('C', 2, 1), ('C', 1, 1))
  
    Again, it's order independent:
  
    >>> score = pyScorePath(m, (2, 1, 0), 3)
    >>> ExplainPathScore(score, 3)
    (('C', 1, 0), ('C', 2, 1), ('C', 1, 1))
  
    >>> m = Chem.MolFromSmiles('C=CO')
    >>> score=pyScorePath(m, (0, 1, 2), 3)
    >>> ExplainPathScore(score, 3)
    (('C', 1, 1), ('C', 2, 1), ('O', 1, 0))
  
    >>> m = Chem.MolFromSmiles('OC=CO')
    >>> score=pyScorePath(m, (0, 1, 2, 3), 4)
    >>> ExplainPathScore(score, 4)
    (('O', 1, 0), ('C', 2, 1), ('C', 2, 1), ('O', 1, 0))
  
    >>> m = Chem.MolFromSmiles('CC=CO')
    >>> score=pyScorePath(m, (0, 1, 2, 3), 4)
    >>> ExplainPathScore(score, 4)
    (('C', 1, 0), ('C', 2, 1), ('C', 2, 1), ('O', 1, 0))
  
  
    >>> m = Chem.MolFromSmiles('C=CC(=O)O')
    >>> score=pyScorePath(m, (0, 1, 2, 3), 4)
    >>> ExplainPathScore(score, 4)
    (('C', 1, 1), ('C', 2, 1), ('C', 3, 1), ('O', 1, 1))
    >>> score=pyScorePath(m, (0, 1, 2, 4), 4)
    >>> ExplainPathScore(score, 4)
    (('C', 1, 1), ('C', 2, 1), ('C', 3, 1), ('O', 1, 0))
  
  
    >>> m = Chem.MolFromSmiles('OOOO')
    >>> score=pyScorePath(m, (0, 1, 2), 3)
    >>> ExplainPathScore(score, 3)
    (('O', 1, 0), ('O', 2, 0), ('O', 2, 0))
    >>> score=pyScorePath(m, (0, 1, 2, 3), 4)
    >>> ExplainPathScore(score, 4)
    (('O', 1, 0), ('O', 2, 0), ('O', 2, 0), ('O', 1, 0))
function: def ExplainPathScore(score, size=4):
    """
  
    >>> from rdkit import Chem
    >>> m = Chem.MolFromSmiles('C=CC')
    >>> score=pyScorePath(m, (0, 1, 2), 3)
    >>> ExplainPathScore(score, 3)
    (('C', 1, 0), ('C', 2, 1), ('C', 1, 1))
  
    Again, it's order independent:
  
    >>> score = pyScorePath(m, (2, 1, 0), 3)
    >>> ExplainPathScore(score, 3)
    (('C', 1, 0), ('C', 2, 1), ('C', 1, 1))
  
    >>> m = Chem.MolFromSmiles('C=CO')
    >>> score=pyScorePath(m, (0, 1, 2), 3)
    >>> ExplainPathScore(score, 3)
    (('C', 1, 1), ('C', 2, 1), ('O', 1, 0))
  
    >>> m = Chem.MolFromSmiles('OC=CO')
    >>> score=pyScorePath(m, (0, 1, 2, 3), 4)
    >>> ExplainPathScore(score, 4)
    (('O', 1, 0), ('C', 2, 1), ('C', 2, 1), ('O', 1, 0))
  
    >>> m = Chem.MolFromSmiles('CC=CO')
    >>> score=pyScorePath(m, (0, 1, 2, 3), 4)
    >>> ExplainPathScore(score, 4)
    (('C', 1, 0), ('C', 2, 1), ('C', 2, 1), ('O', 1, 0))
  
  
    >>> m = Chem.MolFromSmiles('C=CC(=O)O')
    >>> score=pyScorePath(m, (0, 1, 2, 3), 4)
    >>> ExplainPathScore(score, 4)
    (('C', 1, 1), ('C', 2, 1), ('C', 3, 1), ('O', 1, 1))
    >>> score=pyScorePath(m, (0, 1, 2, 4), 4)
    >>> ExplainPathScore(score, 4)
    (('C', 1, 1), ('C', 2, 1), ('C', 3, 1), ('O', 1, 0))
  
  
    >>> m = Chem.MolFromSmiles('OOOO')
    >>> score=pyScorePath(m, (0, 1, 2), 3)
    >>> ExplainPathScore(score, 3)
    (('O', 1, 0), ('O', 2, 0), ('O', 2, 0))
    >>> score=pyScorePath(m, (0, 1, 2, 3), 4)
    >>> ExplainPathScore(score, 4)
    (('O', 1, 0), ('O', 2, 0), ('O', 2, 0), ('O', 1, 0))
  
    """
    codeSize: int = rdMolDescriptors.AtomPairsParameters.codeSize
    codeMask = (1 << codeSize) - 1
    res = [None] * size
    for i in range(size):
      if i == 0 or i == size - 1:
        sub = 1
      else:
        sub = 2
      code = score & codeMask
      score = score >> codeSize
      symb, nBranch, nPi = Utils.ExplainAtomCode(code)
      res[i] = (symb, nBranch + sub, nPi)
    return tuple(res)
function_tokens: def ExplainPathScore ( score , size = 4 ) : codeSize : int = rdMolDescriptors . AtomPairsParameters . codeSize codeMask = ( 1 << codeSize ) - 1 res = [ None ] * size for i in range ( size ) : if i == 0 or i == size - 1 : sub = 1 else : sub = 2 code = score & codeMask score = score >> codeSize symb , nBranch , nPi = Utils . ExplainAtomCode ( code ) res [ i ] = ( symb , nBranch + sub , nPi ) return tuple ( res )