issue_1146.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from vedo import *
  2. from vedo.pyplot import histogram
  3. def set_mask_by_thresholds(thresholds):
  4. vol_arrc = np.zeros_like(vol_arr, dtype=np.uint8)
  5. vol_arrc[(vol_arr > thresholds[0]) & (vol_arr < thresholds[1])] = 1
  6. vol.mask(vol_arrc)
  7. def slider1(w, e):
  8. if slid1.value > slid2.value:
  9. slid1.value = slid2.value
  10. set_mask_by_thresholds([slid1.value, slid2.value])
  11. def slider2(w, e):
  12. if slid2.value < slid1.value:
  13. slid2.value = slid1.value
  14. set_mask_by_thresholds([slid1.value, slid2.value])
  15. vol = Volume(dataurl+"embryo.slc")
  16. vol.mapper = "gpu"
  17. vol.cmap("rainbow").alpha([0, 0.1, 0.2, 0.3, 0.4, 0.8, 1])
  18. vol_arr = vol.tonumpy()
  19. histo = histogram(vol, bins=25, c="rainbow", logscale=True, ytitle="")
  20. histo = histo.clone2d(size=0.5)
  21. plt = Plotter(axes=7)
  22. rng = vol.scalar_range()
  23. slid2 = plt.add_slider(
  24. slider2,
  25. xmin=rng[0],
  26. xmax=rng[1],
  27. value=rng[1],
  28. slider_length=0.02,
  29. slider_width=0.06,
  30. alpha=0.75,
  31. c="red2",
  32. delayed=True, # update only when mouse is released
  33. )
  34. slid1 = plt.add_slider(
  35. slider1,
  36. xmin=rng[0],
  37. xmax=rng[1],
  38. value=rng[0],
  39. slider_length=0.01,
  40. slider_width=0.05,
  41. alpha=0.75,
  42. tube_width=0.0015,
  43. c="blue2",
  44. delayed=True,
  45. )
  46. plt.show(vol, histo)
  47. plt.close()