vis.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import matplotlib
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. from p2ch09.dsets import Ct, LunaDataset
  5. clim=(-1000.0, 300)
  6. def findMalignantSamples(start_ndx=0, limit=100):
  7. ds = LunaDataset()
  8. malignantSample_list = []
  9. for sample_tup in ds.noduleInfo_list:
  10. if sample_tup[0]:
  11. malignantSample_list.append(sample_tup)
  12. if len(malignantSample_list) >= limit:
  13. break
  14. return malignantSample_list
  15. def showNodule(series_uid, batch_ndx=None):
  16. ds = LunaDataset(series_uid=series_uid)
  17. malignant_list = [i for i, x in enumerate(ds.noduleInfo_list) if x[0]]
  18. if batch_ndx is None:
  19. if malignant_list:
  20. batch_ndx = malignant_list[0]
  21. else:
  22. print("Warning: no malignant samples found; using first non-malignant sample.")
  23. batch_ndx = 0
  24. ct = Ct(series_uid)
  25. ct_t, malignant_t, series_uid, center_irc = ds[batch_ndx]
  26. ct_a = ct_t[0].numpy()
  27. fig = plt.figure(figsize=(15, 25))
  28. group_list = [
  29. [9,11,13],
  30. [15, 16, 17],
  31. [19,21,23],
  32. ]
  33. subplot = fig.add_subplot(len(group_list) + 2, 3, 1)
  34. subplot.set_title('index {}'.format(int(center_irc.index)))
  35. plt.imshow(ct.hu_a[int(center_irc.index)], clim=clim, cmap='gray')
  36. subplot = fig.add_subplot(len(group_list) + 2, 3, 2)
  37. subplot.set_title('row {}'.format(int(center_irc.row)))
  38. plt.imshow(ct.hu_a[:,int(center_irc.row)], clim=clim, cmap='gray')
  39. subplot = fig.add_subplot(len(group_list) + 2, 3, 3)
  40. subplot.set_title('col {}'.format(int(center_irc.col)))
  41. plt.imshow(ct.hu_a[:,:,int(center_irc.col)], clim=clim, cmap='gray')
  42. subplot = fig.add_subplot(len(group_list) + 2, 3, 4)
  43. subplot.set_title('index {}'.format(int(center_irc.index)))
  44. plt.imshow(ct_a[ct_a.shape[0]//2], clim=clim, cmap='gray')
  45. subplot = fig.add_subplot(len(group_list) + 2, 3, 5)
  46. subplot.set_title('row {}'.format(int(center_irc.row)))
  47. plt.imshow(ct_a[:,ct_a.shape[1]//2], clim=clim, cmap='gray')
  48. subplot = fig.add_subplot(len(group_list) + 2, 3, 6)
  49. subplot.set_title('col {}'.format(int(center_irc.col)))
  50. plt.imshow(ct_a[:,:,ct_a.shape[2]//2], clim=clim, cmap='gray')
  51. for row, index_list in enumerate(group_list):
  52. for col, index in enumerate(index_list):
  53. subplot = fig.add_subplot(len(group_list) + 2, 3, row * 3 + col + 7)
  54. subplot.set_title('slice {}'.format(index))
  55. plt.imshow(ct_a[index], clim=clim, cmap='gray')
  56. print(series_uid, batch_ndx, bool(malignant_t[0]), malignant_list)