IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
3.3KB

  1. from triacontagon.data import Data
  2. from triacontagon.sampling import fixed_unigram_candidate_sampler, \
  3. get_true_classes, \
  4. negative_sample_adj_mat, \
  5. negative_sample_data, \
  6. get_edges_and_degrees, \
  7. fixed_unigram_candidate_sampler_new
  8. from triacontagon.decode import dedicom_decoder
  9. import torch
  10. import time
  11. def test_fixed_unigram_candidate_sampler_01():
  12. true_classes = torch.tensor([[-1],
  13. [-1],
  14. [ 3],
  15. [ 2],
  16. [-1]])
  17. num_repeats = torch.tensor([0, 0, 1, 1, 0])
  18. unigrams = torch.tensor([0., 0., 1., 1., 0.], dtype=torch.float64)
  19. distortion = 0.75
  20. res = fixed_unigram_candidate_sampler(true_classes, num_repeats,
  21. unigrams, distortion)
  22. print('res:', res)
  23. def test_fixed_unigram_candidate_sampler_02():
  24. foo_bar = torch.tensor([
  25. [0, 1, 0, 1],
  26. [0, 0, 0, 1],
  27. [0, 1, 0, 0],
  28. [1, 0, 0, 0],
  29. [0, 0, 1, 1]
  30. ], dtype=torch.float32)
  31. # bar_foo = foo_bar.transpose(0, 1).to_sparse().coalesce()
  32. bar_foo = foo_bar.to_sparse().coalesce()
  33. true_classes, row_count = get_true_classes(bar_foo)
  34. print('true_classes:', true_classes)
  35. print('row_count:', row_count)
  36. edges_pos, degrees = get_edges_and_degrees(bar_foo)
  37. res = fixed_unigram_candidate_sampler(true_classes, row_count,
  38. degrees, 0.75)
  39. print('res:', res)
  40. def test_get_true_classes_01():
  41. adj_mat = torch.tensor([
  42. [0, 1, 0, 1, 0],
  43. [0, 0, 0, 0, 1],
  44. [1, 1, 0, 0, 0],
  45. [0, 0, 1, 0, 1],
  46. [0, 1, 0, 0, 0]
  47. ], dtype=torch.float).to_sparse()
  48. true_classes, row_count = get_true_classes(adj_mat)
  49. print('true_classes:', true_classes)
  50. true_classes = torch.repeat_interleave(true_classes, row_count, dim=0)
  51. assert torch.all(true_classes == torch.tensor([
  52. [1, 3],
  53. [1, 3],
  54. [4, -1],
  55. [0, 1],
  56. [0, 1],
  57. [2, 4],
  58. [2, 4],
  59. [1, -1]
  60. ]))
  61. def test_get_true_classes_02():
  62. adj_mat = torch.rand(2000, 2000).round().to_sparse()
  63. t = time.time()
  64. true_classes, row_count = get_true_classes(adj_mat)
  65. print('Elapsed:', time.time() - t)
  66. print('true_classes.shape:', true_classes.shape)
  67. def test_negative_sample_adj_mat_01():
  68. adj_mat = torch.tensor([
  69. [0, 1, 0, 1, 0],
  70. [0, 0, 0, 0, 1],
  71. [1, 1, 0, 0, 0],
  72. [0, 0, 1, 0, 1],
  73. [0, 1, 0, 0, 0]
  74. ])
  75. print('adj_mat:', adj_mat)
  76. adj_mat_neg = negative_sample_adj_mat(adj_mat.to_sparse())
  77. print('adj_mat_neg:', adj_mat_neg.to_dense())
  78. def test_negative_sample_data_01():
  79. d = Data()
  80. d.add_vertex_type('Gene', 5)
  81. d.add_edge_type('Gene-Gene', 0, 0, [
  82. torch.tensor([
  83. [0, 1, 0, 1, 0],
  84. [0, 0, 0, 0, 1],
  85. [1, 1, 0, 0, 0],
  86. [0, 0, 1, 0, 1],
  87. [0, 1, 0, 0, 0]
  88. ], dtype=torch.float).to_sparse()
  89. ], dedicom_decoder)
  90. d_neg = negative_sample_data(d)
  91. def test_fixed_unigram_candidate_sampler_new_01():
  92. x = (torch.rand((10, 10)) < .1).to(torch.float32).to_sparse()
  93. true_classes, row_count = get_true_classes(x)
  94. edges, degrees = get_edges_and_degrees(x)
  95. # import pdb
  96. # pdb.set_trace()
  97. _ = fixed_unigram_candidate_sampler_new(true_classes, row_count, degrees, 0.75)