code: def _get_alm_disp_fc3(disp_dataset):
      
  
      natom = disp_dataset['natom']
      ndisp = len(disp_dataset['first_atoms'])
      for disp1 in disp_dataset['first_atoms']:
          ndisp += len(disp1['second_atoms'])
      disp = np.zeros((ndisp, natom, 3), dtype='double', order='C')
      indices = []
      count = 0
      for disp1 in disp_dataset['first_atoms']:
          indices.append(count)
          disp[count, disp1['number']] = disp1['displacement']
          count += 1
  
      for disp1 in disp_dataset['first_atoms']:
          for disp2 in disp1['second_atoms']:
              if 'included' in disp2:
                  if disp2['included']:
                      indices.append(count)
              else:
                  indices.append(count)
              disp[count, disp1['number']] = disp1['displacement']
              disp[count, disp2['number']] = disp2['displacement']
              count += 1
  
      return disp, indices
docs: Create displacements of atoms for ALM input
  
      Note
      ----
      Dipslacements of all atoms in supercells for all displacement
      configurations in phono3py are returned, i.e., most of
      displacements are zero. Only the configurations with 'included' ==
      True are included in the list of indices that is returned, too.
  
      Parameters
      ----------
      disp_dataset : dict
          Displacement dataset that may be obtained by
          file_IO.parse_disp_fc3_yaml.
  
      Returns
      -------
      disp : ndarray
          Displacements of atoms in supercells of all displacement
          configurations.
          shape=(ndisp, natom, 3)
          dtype='double'
      indices : list of int
          The indices of the displacement configurations with 'included' == True.