pyiron/pyiron_atomistics

get_structure() for sphinx jobs gives error

Opened this issue · 6 comments

Summary

running get_structure() for sphinx job gives error (IndexError: ('cell at step ', 25, ' not found')). Sphinx Job is a DFT relaxation job. and cell typically doesn't change for each step.

job = pr.load('sphinx_job')
job.get_structure(i) # i>0 gives the error.

I should open a PR or are you going to work on it?

@samwaseda
I wanted to confirm before I made any changes. The only part in sphinx base, where cells are written to output is here

        if "cells" not in self.generic.list_nodes():
            self.generic.cells = np.array([self._job.structure.cell.tolist()])

So as you said changing this line to

        if "cells" not in self.generic.list_nodes():
            self.generic.cells = np.tile(np.array([self._job.structure.cell.tolist()]),(len(self.generic.energy_tot),1,1))

should work?

Yeah I guess this would work. But this has to be implemented in SPHInX base

But sphinx base output class has no property of cells. should I then create it?

Yes

The issue still exists. As @freyso and I discussed today, the get_structure() method tries to get the cell information from the output level, where as the modifications we did work on output.generic level. So I guess we could debate at which level the methods should access the data? And how do we fix this?