toArray was used in ATK 2008.10, but has been discontinued for quite a while. As far as I know, it shouldn't be mentioned in the manuals either.
To get the separate spin up and down LDOS, use the keyword spin=Spin.Up or Spin.Down when you calculate the LDOS, like
LDOS_u = LocalDeviceDensityOfStates(device_configuration, energy=0.*eV, spin=Spin.Up)
After that, the need convert the data to raw numbers (which is what toArray did) depends strongly on your objective; for 3D plotting, the best way is to just saved it in an NC file and use VNL. You can also export the data to a Gaussian Cube file from within VNL.
Which is real easy :)
LDOS_u = LocalDeviceDensityOfStates(device_configuration, energy=0.*eV, spin=Spin.Up)
LDOS_d = LocalDeviceDensityOfStates(device_configuration, energy=0.*eV, spin=Spin.Down)
LDOS_diff = LDOS_u-LDOS_d
nlsave("file.nc",LDOS_u,object_id="LDOS Up")
nlsave("file.nc",LDOS_d,object_id="LDOS Down")
nlsave("file.nc",LDOS_diff,object_id="Difference")
Now you can plot each quantity in VNL. The object_ids are optional, but help identify the data.
It's a bug, of sorts. One can argue which "spin" property the LDOS difference object should have (and this will create some difficulties for us in designing a proper solution), but at least the following lines of code will allow the computed difference LDOS to be saved in the NetCDF and then visualized in VNL:
LDOS_u = LocalDeviceDensityOfStates(device_configuration, energy=0.*eV, spin=Spin.Up)
LDOS_d = LocalDeviceDensityOfStates(device_configuration, energy=0.*eV, spin=Spin.Down)
LDOS_diff = LDOS_u-LDOS_d
# Assign missing quantities to the difference object which allows it to be nlsaved
LDOS_diff._LocalDeviceDensityOfStates__contributions = LDOS_d._LocalDeviceDensityOfStates__contributions
LDOS_diff._LocalDeviceDensityOfStates__energy = LDOS_d._LocalDeviceDensityOfStates__energy
LDOS_diff._LocalDeviceDensityOfStates__energy_zero = LDOS_d._LocalDeviceDensityOfStates__energy_zero
LDOS_diff._LocalDeviceDensityOfStates__energy_zero_parameter = LDOS_d._LocalDeviceDensityOfStates__energy_
# For lack of better value, set the spin to Spin.Sum (Up and Down are certainly wrong!)
# This has no influence on plotting etc, it's just a matter of book-keeping
LDOS_diff._LocalDeviceDensityOfStates__spin = Spin.Sum
nlsave("file.nc",LDOS_u,object_id="LDOS Up")
nlsave("file.nc",LDOS_d,object_id="LDOS Down")
nlsave("file.nc",LDOS_diff,object_id="Difference")