[yt-users] Plotting differences of two datasets

Aaron Lee a.t.lee at berkeley.edu
Tue Mar 11 14:27:26 PDT 2014


All,

Hopefully this is a simple question and is giving me trouble only because of my ignorance of how data is stored in YT structures. 

I have two data files of data tabulated over the same unigrid. Each side of the domain ranges from 0 to 1. I am interested in plotting a cell by cell difference of some quantity. For simplicity, let’s just say it’s the density. 

So what I have tried is this:

(1) Load the files:
pf1 = load(“file1”)
pf2 = load(“file2")

(2) Following some YT cookbook pages, I extract the data :
cube1 = pf1.h.covering_grid(1,left_edge=[0,0,0],dims=[128,128,128],fields=["Density”])
cube2 = pf2.h.covering_grid(1,left_edge=[0,0,0],dims=[128,128,128],fields=["Density”])

If I then type something like 
	cube1[“Density”]
the output is a 3d array of data. Similarly for cube2[“Density”]. OK. 

(3) Now the part I’m more iffy on. To create a new data cube, I first instigate it as a copy of cube1 and then manipulate the data (at least, I thought I was… see below):
test = cube1  
test[“Density”] = cube1[“Density”]-cube2[“Density”]

If I then type 
	test[“Density”]
the outputted array is an array of the differences, which is what I want to plot. 

However, when I then plot the data by doing:

pc=PlotCollection(test,center=[0.5,0.5,0.5])
p=pc.add_slice(“Density",'y')
p.save_to_pdf('Test.pdf’)

The Test.pdf is a plot of just the cube1 density. So the data does not appear to be manipulated at all. If I do not instigate ‘test' first as a copy of cube1, yt complains because cube1[“Density”]-cube2[“Density”] is only an array of data. 

Another idea could be to create a new user-defined field that within the field definition loads another data file and does the difference for me. It would probably be clunky, but seems possible in theory. But you would know better than I. 

Thanks in advance for any notes and tips,
Aaron




More information about the yt-users mailing list