So I think I found a bug in cut_region. Right now the directions say you can chain cut regions in two ways: either listing several cut_regions or using one call and an "&".
However, for some extremely mysterious reason, when I do a multi-call to cut_region I get wackadoo numbers, like too high by a couple orders of magnitude.
ds = yt.load("/data001/stonnes/BPr16vs30arcfo/DD"+loop[i]+"/BPr16vs30arcfo"+loop[i])
disk3 = ds.disk([0.5,0.5,0.5],[0,0,-1.0],(40,"kpc"),(10,"kpc"))
diskn = disk3.cut_region(["obj['Metal_Density']/obj['density'] > 0.5"])
diska = diskn.cut_region(["obj['density'] > 1e-25"])
diskd = disk3.cut_region(["(obj['Metal_Density']/obj['density'] > 0.5) & (obj['density'] > 1e-25)"])
print diska.quantities.total_quantity([("gas","cell_mass")])
print disk3.quantities.total_quantity([("gas","cell_mass")])
print diskn.quantities.total_quantity([("gas","cell_mass")])
print diskd.quantities.total_quantity([("gas","cell_mass")])
I am also attaching my whole code, which is a loop, just in case. So here the diska mass is two orders of magnitude larger than any of the others, and diskd is what I would expect with the two selection criteria.