To me, it is more natural to list the data first in the tomography function (instead of the initial starting state), since that is what is being learned so is more important. Also, the starting state could be optional (i.e. we could initialize it automatically), and generally it is better to put more "optional" things later in the input list.
Also, it might be nice to pass the optimizer as a keyword argument optimizer = .... So for example:
To me, it is more natural to list the data first in the tomography function (instead of the initial starting state), since that is what is being learned so is more important. Also, the starting state could be optional (i.e. we could initialize it automatically), and generally it is better to put more "optional" things later in the input list.
Also, it might be nice to pass the optimizer as a keyword argument
optimizer = ...
. So for example: