lightly-studio 0.3.2__tar.gz → 0.3.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of lightly-studio might be problematic. Click here for more details.

Files changed (265) hide show
  1. lightly_studio-0.3.2/USAGE.md → lightly_studio-0.3.3/PKG-INFO +183 -24
  2. lightly_studio-0.3.2/PKG-INFO → lightly_studio-0.3.3/USAGE.md +142 -58
  3. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/pyproject.toml +30 -11
  4. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/__init__.py +1 -1
  5. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/app.py +6 -4
  6. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/db_tables.py +0 -3
  7. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/annotation.py +26 -0
  8. lightly_studio-0.3.3/src/lightly_studio/api/routes/api/annotations/__init__.py +7 -0
  9. lightly_studio-0.3.3/src/lightly_studio/api/routes/api/annotations/create_annotation.py +52 -0
  10. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/dataset.py +3 -5
  11. lightly_studio-0.3.3/src/lightly_studio/api/routes/api/embeddings2d.py +104 -0
  12. lightly_studio-0.3.3/src/lightly_studio/api/routes/api/export.py +73 -0
  13. lightly_studio-0.3.3/src/lightly_studio/api/routes/api/selection.py +87 -0
  14. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/add_samples.py +0 -9
  15. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/dataset.py +32 -48
  16. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/dataset_query/dataset_query.py +5 -0
  17. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dataset/env.py +4 -0
  18. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dataset/file_utils.py +13 -2
  19. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dataset/loader.py +0 -54
  20. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dataset/mobileclip_embedding_generator.py +3 -2
  21. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/0.CA_CXIBb.css +1 -0
  22. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/_layout.DS78jgNY.css +1 -0
  23. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/SelectableSvgGroup.BNTuXSAe.css → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/index.BVs_sZj9.css +1 -1
  24. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/SelectableSvgGroup.BBm0IWdq.css → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/transform.D487hwJk.css +1 -1
  25. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/6t3IJ0vQ.js +1 -0
  26. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/gLNdjSzu.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/8NsknIT2.js +1 -1
  27. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/Cur71c3O.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BND_-4Kp.js +1 -1
  28. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DRZO-E-T.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BdfTHw61.js +1 -1
  29. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BqBqV92V.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BfHVnyNT.js +1 -1
  30. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BjkP1AHA.js +1 -0
  31. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BuuNVL9G.js +1 -0
  32. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/7YNGEs1C.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BzKGpnl4.js +1 -1
  33. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/C0JiMuYn.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CCx7Ho51.js +1 -1
  34. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DcGCxgpH.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CH6P3X75.js +1 -1
  35. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CR2upx_Q.js +4 -0
  36. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CWPZrTTJ.js +1 -0
  37. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/Ccq4ZD0B.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/Cs1XmhiF.js +1 -1
  38. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/OH7-C_mc.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CwPowJfP.js +1 -1
  39. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CxFKfZ9T.js +1 -0
  40. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/Cxevwdid.js +1 -0
  41. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/C98Hk3r5.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/D4whDBUi.js +1 -1
  42. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/D6r9vr07.js +1 -0
  43. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DqUGznj_.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DA6bFLPR.js +1 -1
  44. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/2O287xak.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DEgUu98i.js +2 -2
  45. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/KpAtIldw.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DGTPl6Gk.js +1 -1
  46. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/Cs31G8Qn.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DKGxBSlK.js +1 -1
  47. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/D8GZDMNN.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DQXoLcsF.js +1 -1
  48. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DQe_kdRt.js +92 -0
  49. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DcY4jgG3.js +1 -0
  50. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/Crk-jcvV.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/RmD8FzRo.js +1 -1
  51. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/V-MnMC1X.js +1 -0
  52. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/Df3aMO5B.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/keKYsoph.js +1 -1
  53. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/entry/app.BI-EA5gL.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/entry/app.BVr6DYqP.js +2 -2
  54. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/entry/start.u7zsVvqp.js +1 -0
  55. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/0.Da2agmdd.js +1 -0
  56. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/1._I9GR805.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/1.B11tVRJV.js +1 -1
  57. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/10.J2RBFrSr.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/10.l30Zud4h.js +1 -1
  58. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/12.Cmqj25a-.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/12.CgKPGcAP.js +1 -1
  59. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/2.C8HLK8mj.js +857 -0
  60. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/3.w9g4AcAx.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/3.CLvg3QcJ.js +1 -1
  61. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/4.BBI8KwnD.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/4.BQhDtXUI.js +1 -1
  62. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/5.-6XqWX5G.js +1 -0
  63. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/6.CrbkRPam.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/6.uBV1Lhat.js +1 -1
  64. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/7.FomEdhD6.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/7.BXsgoQZh.js +1 -1
  65. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/8.BkbcnUs8.js +1 -0
  66. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/9.CajIG5ce.js → lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/9.Bkrv-Vww.js +1 -1
  67. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/workers/clustering.worker-DKqeLtG0.js +2 -0
  68. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/workers/search.worker-vNSty3B0.js +1 -0
  69. lightly_studio-0.3.3/src/lightly_studio/dist_lightly_studio_view_app/_app/version.json +1 -0
  70. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/index.html +14 -14
  71. lightly_studio-0.3.3/src/lightly_studio/export/export_dataset.py +65 -0
  72. lightly_studio-0.3.3/src/lightly_studio/export/lightly_studio_label_input.py +120 -0
  73. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/few_shot_classifier/classifier_manager.py +5 -26
  74. lightly_studio-0.3.3/src/lightly_studio/metadata/compute_typicality.py +67 -0
  75. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/annotation/annotation_base.py +11 -12
  76. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_label_resolver/__init__.py +2 -1
  77. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_label_resolver/get_all.py +15 -0
  78. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_resolver/__init__.py +2 -3
  79. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_resolver/create_many.py +3 -3
  80. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_resolver/delete_annotation.py +1 -1
  81. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_resolver/delete_annotations.py +7 -3
  82. lightly_studio-0.3.3/src/lightly_studio/resolvers/annotation_resolver/get_by_id.py +36 -0
  83. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_resolver/update_annotation_label.py +0 -1
  84. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotations/annotations_filter.py +1 -11
  85. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/selection/mundig.py +7 -10
  86. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/selection/selection_config.py +4 -1
  87. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/services/annotations_service/__init__.py +8 -0
  88. lightly_studio-0.3.3/src/lightly_studio/services/annotations_service/create_annotation.py +63 -0
  89. lightly_studio-0.3.3/src/lightly_studio/services/annotations_service/delete_annotation.py +22 -0
  90. lightly_studio-0.3.2/src/lightly_studio/api/routes/api/annotation_task.py +0 -37
  91. lightly_studio-0.3.2/src/lightly_studio/api/routes/api/metrics.py +0 -76
  92. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/0.DenzbfeK.css +0 -1
  93. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/_layout.T-zjSUd3.css +0 -1
  94. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BBoGk9hq.js +0 -1
  95. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BRnH9v23.js +0 -92
  96. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/Bg1Y5eUZ.js +0 -1
  97. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CG0dMCJi.js +0 -1
  98. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/Cpy-nab_.js +0 -1
  99. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CsKrY2zA.js +0 -1
  100. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CzgC3GFB.js +0 -1
  101. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DFRh-Spp.js +0 -1
  102. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DkR_EZ_B.js +0 -1
  103. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/M1Q1F7bw.js +0 -4
  104. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/i0ZZ4z06.js +0 -1
  105. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/entry/start.CcsRl3cZ.js +0 -1
  106. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/0.BbO4Zc3r.js +0 -1
  107. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/2.C45iKJHA.js +0 -6
  108. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/5.huHuxdiF.js +0 -1
  109. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/8.Cb_ADSLk.js +0 -1
  110. lightly_studio-0.3.2/src/lightly_studio/dist_lightly_studio_view_app/_app/version.json +0 -1
  111. lightly_studio-0.3.2/src/lightly_studio/metrics/detection/__init__.py +0 -0
  112. lightly_studio-0.3.2/src/lightly_studio/metrics/detection/map.py +0 -268
  113. lightly_studio-0.3.2/src/lightly_studio/models/annotation/__init__.py +0 -0
  114. lightly_studio-0.3.2/src/lightly_studio/models/annotation_task.py +0 -28
  115. lightly_studio-0.3.2/src/lightly_studio/resolvers/annotation_resolver/create.py +0 -19
  116. lightly_studio-0.3.2/src/lightly_studio/resolvers/annotation_resolver/get_by_id.py +0 -18
  117. lightly_studio-0.3.2/src/lightly_studio/resolvers/annotation_task_resolver.py +0 -31
  118. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/.gitignore +0 -0
  119. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/__init__.py +0 -0
  120. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/cache.py +0 -0
  121. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/features.py +0 -0
  122. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/annotation_label.py +0 -0
  123. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/classifier.py +0 -0
  124. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/dataset_tag.py +0 -0
  125. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/exceptions.py +0 -0
  126. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/features.py +0 -0
  127. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/metadata.py +0 -0
  128. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/sample.py +0 -0
  129. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/settings.py +0 -0
  130. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/status.py +0 -0
  131. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/text_embedding.py +0 -0
  132. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/api/validators.py +0 -0
  133. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/healthz.py +0 -0
  134. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/images.py +0 -0
  135. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/routes/webapp.py +0 -0
  136. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/api/server.py +0 -0
  137. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/__init__.py +0 -0
  138. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/dataset_query/__init__.py +0 -0
  139. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/dataset_query/boolean_expression.py +0 -0
  140. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/dataset_query/field.py +0 -0
  141. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/dataset_query/field_expression.py +0 -0
  142. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/dataset_query/match_expression.py +0 -0
  143. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/dataset_query/order_by.py +0 -0
  144. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/dataset_query/sample_field.py +0 -0
  145. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/dataset_query/tags_expression.py +0 -0
  146. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/sample.py +0 -0
  147. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/core/start_gui.py +0 -0
  148. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dataset/__init__.py +0 -0
  149. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dataset/edge_embedding_generator.py +0 -0
  150. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dataset/embedding_generator.py +0 -0
  151. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dataset/embedding_manager.py +0 -0
  152. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dataset/fsspec_lister.py +0 -0
  153. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/db_manager.py +0 -0
  154. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/env.js +0 -0
  155. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/LightlyLogo.BNjCIww-.png +0 -0
  156. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-Bold.DGvYQtcs.ttf +0 -0
  157. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-Italic-VariableFont_wdth_wght.B4AZ-wl6.ttf +0 -0
  158. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-Medium.DVUZMR_6.ttf +0 -0
  159. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-Regular.DxJTClRG.ttf +0 -0
  160. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-SemiBold.D3TTYgdB.ttf +0 -0
  161. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-VariableFont_wdth_wght.BZBpG5Iz.ttf +0 -0
  162. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/useFeatureFlags.CV-KWLNP.css +0 -0
  163. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/69_IOA4Y.js +0 -0
  164. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/B90CZVMX.js +0 -0
  165. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CWj6FrbW.js +0 -0
  166. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CYgJF_JY.js +0 -0
  167. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DIeogL5L.js +0 -0
  168. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/H7C68rOM.js +0 -0
  169. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/11.CWG1ehzT.js +0 -0
  170. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/apple-touch-icon-precomposed.png +0 -0
  171. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/apple-touch-icon.png +0 -0
  172. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/dist_lightly_studio_view_app/favicon.png +0 -0
  173. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/examples/example.py +0 -0
  174. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/examples/example_coco.py +0 -0
  175. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/examples/example_metadata.py +0 -0
  176. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/examples/example_selection.py +0 -0
  177. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/examples/example_split_work.py +0 -0
  178. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/examples/example_yolo.py +0 -0
  179. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/export_schema.py +0 -0
  180. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/few_shot_classifier/__init__.py +0 -0
  181. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/few_shot_classifier/classifier.py +0 -0
  182. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/few_shot_classifier/random_forest_classifier.py +0 -0
  183. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/metadata/complex_metadata.py +0 -0
  184. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/metadata/gps_coordinate.py +0 -0
  185. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/metadata/metadata_protocol.py +0 -0
  186. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/__init__.py +0 -0
  187. {lightly_studio-0.3.2/src/lightly_studio/metrics → lightly_studio-0.3.3/src/lightly_studio/models/annotation}/__init__.py +0 -0
  188. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/annotation/instance_segmentation.py +0 -0
  189. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/annotation/links.py +0 -0
  190. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/annotation/object_detection.py +0 -0
  191. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/annotation/semantic_segmentation.py +0 -0
  192. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/annotation_label.py +0 -0
  193. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/classifier.py +0 -0
  194. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/dataset.py +0 -0
  195. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/embedding_model.py +0 -0
  196. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/metadata.py +0 -0
  197. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/sample.py +0 -0
  198. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/sample_embedding.py +0 -0
  199. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/settings.py +0 -0
  200. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/models/tag.py +0 -0
  201. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/py.typed +0 -0
  202. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/__init__.py +0 -0
  203. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_label_resolver/create.py +0 -0
  204. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_label_resolver/delete.py +0 -0
  205. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_label_resolver/get_by_id.py +0 -0
  206. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_label_resolver/get_by_ids.py +0 -0
  207. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_label_resolver/get_by_label_name.py +0 -0
  208. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_label_resolver/names_by_ids.py +0 -0
  209. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_label_resolver/update.py +0 -0
  210. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_resolver/count_annotations_by_dataset.py +0 -0
  211. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_resolver/get_all.py +0 -0
  212. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotation_resolver/update_bounding_box.py +0 -0
  213. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/annotations/__init__.py +0 -0
  214. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/dataset_resolver.py +0 -0
  215. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/embedding_model_resolver.py +0 -0
  216. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/metadata_resolver/__init__.py +0 -0
  217. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/metadata_resolver/metadata_filter.py +0 -0
  218. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/metadata_resolver/sample/__init__.py +0 -0
  219. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/metadata_resolver/sample/bulk_set_metadata.py +0 -0
  220. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/metadata_resolver/sample/get_by_sample_id.py +0 -0
  221. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/metadata_resolver/sample/get_metadata_info.py +0 -0
  222. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/metadata_resolver/sample/get_value_for_sample.py +0 -0
  223. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/metadata_resolver/sample/set_value_for_sample.py +0 -0
  224. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/sample_embedding_resolver.py +0 -0
  225. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/sample_resolver.py +0 -0
  226. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/samples_filter.py +0 -0
  227. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/settings_resolver.py +0 -0
  228. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/resolvers/tag_resolver.py +0 -0
  229. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/selection/README.md +0 -0
  230. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/selection/select.py +0 -0
  231. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/selection/select_via_db.py +0 -0
  232. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/services/annotations_service/get_annotation_by_id.py +0 -0
  233. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/services/annotations_service/update_annotation.py +0 -0
  234. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/services/annotations_service/update_annotation_bounding_box.py +0 -0
  235. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/services/annotations_service/update_annotation_label.py +0 -0
  236. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/services/annotations_service/update_annotations.py +0 -0
  237. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/setup_logging.py +0 -0
  238. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/type_definitions.py +0 -0
  239. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/ACKNOWLEDGEMENTS +0 -0
  240. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/LICENSE +0 -0
  241. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/LICENSE_weights_data +0 -0
  242. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/README.md +0 -0
  243. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/__init__.py +0 -0
  244. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/__init__.py +0 -0
  245. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/clip.py +0 -0
  246. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/configs/mobileclip_b.json +0 -0
  247. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/configs/mobileclip_s0.json +0 -0
  248. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/configs/mobileclip_s1.json +0 -0
  249. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/configs/mobileclip_s2.json +0 -0
  250. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/image_encoder.py +0 -0
  251. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/logger.py +0 -0
  252. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/models/__init__.py +0 -0
  253. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/models/mci.py +0 -0
  254. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/models/vit.py +0 -0
  255. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/modules/__init__.py +0 -0
  256. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/modules/common/__init__.py +0 -0
  257. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/modules/common/mobileone.py +0 -0
  258. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/modules/common/transformer.py +0 -0
  259. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/modules/image/__init__.py +0 -0
  260. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/modules/image/image_projection.py +0 -0
  261. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/modules/image/replknet.py +0 -0
  262. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/modules/text/__init__.py +0 -0
  263. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/modules/text/repmixer.py +0 -0
  264. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/modules/text/tokenizer.py +0 -0
  265. {lightly_studio-0.3.2 → lightly_studio-0.3.3}/src/lightly_studio/vendor/mobileclip/text_encoder.py +0 -0
@@ -1,3 +1,44 @@
1
+ Metadata-Version: 2.4
2
+ Name: lightly-studio
3
+ Version: 0.3.3
4
+ Summary: LightlyStudio is a lightweight, fast, and easy-to-use data exploration tool for data scientists and engineers.
5
+ Classifier: Operating System :: MacOS :: MacOS X
6
+ Classifier: Operating System :: Microsoft :: Windows
7
+ Classifier: Operating System :: POSIX :: Linux
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.8
10
+ Classifier: Programming Language :: Python :: 3.9
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Requires-Python: >=3.8
14
+ Requires-Dist: annotated-types==0.7.0
15
+ Requires-Dist: duckdb-engine<0.17,>=0.15.0
16
+ Requires-Dist: duckdb<1.3,>=1.2.2
17
+ Requires-Dist: environs<12.0.0
18
+ Requires-Dist: eval-type-backport>=0.2.2
19
+ Requires-Dist: fastapi>=0.115.5
20
+ Requires-Dist: faster-coco-eval>=1.6.5
21
+ Requires-Dist: fsspec>=2023.1.0
22
+ Requires-Dist: labelformat>=0.1.7
23
+ Requires-Dist: lightly-mundig==0.1.4
24
+ Requires-Dist: open-clip-torch>=2.20.0
25
+ Requires-Dist: pyarrow>=17.0.0
26
+ Requires-Dist: python-multipart>=0.0.20
27
+ Requires-Dist: scikit-learn==1.3.2
28
+ Requires-Dist: sqlmodel>=0.0.22
29
+ Requires-Dist: tqdm>=4.65.0
30
+ Requires-Dist: typing-extensions>=4.12.2
31
+ Requires-Dist: uvicorn>=0.32.1
32
+ Requires-Dist: xxhash>=3.5.0
33
+ Provides-Extra: cloud-storage
34
+ Requires-Dist: adlfs>=2023.1.0; extra == 'cloud-storage'
35
+ Requires-Dist: gcsfs>=2023.1.0; extra == 'cloud-storage'
36
+ Requires-Dist: s3fs>=2023.1.0; extra == 'cloud-storage'
37
+ Provides-Extra: lightly-edge
38
+ Requires-Dist: lightly-edge-sdk>=1.0.1b2; extra == 'lightly-edge'
39
+ Requires-Dist: opencv-python; extra == 'lightly-edge'
40
+ Description-Content-Type: text/markdown
41
+
1
42
  <div align="center">
2
43
  <p align="center">
3
44
 
@@ -79,41 +120,46 @@ python -m venv venv
79
120
  .\venv\Scripts\activate
80
121
 
81
122
  # 2. Install LightlyStudio
82
- pip install lightly_studio
123
+ pip install lightly-studio
83
124
  ```
84
125
 
85
126
  ## **Quickstart**
86
127
 
87
- Download the dataset and run a quickstart script to load your dataset and launch the app.
88
-
89
- ### YOLO Object Detection
90
-
91
- To run an example using a yolo dataset, clone the example repository and run the example script from below:
128
+ Download example datasets by cloning the example repository:
92
129
 
93
130
  ```shell
94
131
  git clone https://github.com/lightly-ai/dataset_examples dataset_examples
95
132
  ```
96
133
 
97
- **`example_yolo.py` script to explore the dataset:**
134
+ ### YOLO Object Detection
135
+
136
+ To run an example using a YOLO dataset, create a file named `example_yolo.py` with the
137
+ following contents in the same directory that contains the `dataset_examples/` folder:
98
138
 
99
139
  ```python
100
- from pathlib import Path
140
+ # example_yolo.py
101
141
 
142
+ from pathlib import Path
102
143
  import lightly_studio as ls
103
144
 
104
- data_yaml_path = Path(__file__).resolve().parent / "data.yaml"
105
-
106
145
  # Create a dataset and add the samples from the yolo format
107
146
  dataset = ls.Dataset.create()
108
147
  dataset.add_samples_from_yolo(
109
- data_yaml=data_yaml_path,
148
+ data_yaml="dataset_examples/road_signs_yolo/data.yaml",
110
149
  input_split="test",
111
150
  )
112
151
 
113
152
  # Start the UI application on the port 8001.
114
153
  ls.start_gui()
154
+ ```
155
+
156
+ Run the script:
115
157
 
116
158
  ```
159
+ python example_yolo.py
160
+ ```
161
+
162
+ When you are done, stop the app by pressing Ctrl+C in the terminal.
117
163
 
118
164
  <details>
119
165
  <summary>The YOLO format details:</summary>
@@ -149,26 +195,21 @@ Where coordinates are normalized between 0 and 1.
149
195
 
150
196
  ### COCO Instance Segmentation
151
197
 
152
- To run an instance segmentation example using a COCO dataset, clone the example repository and run the example script from below:
153
-
154
- ```shell
155
- git clone https://github.com/lightly-ai/dataset_examples dataset_examples
156
- ```
157
-
158
- **`example_coco.py` script to explore the dataset:**
198
+ To run an instance segmentation example using a COCO dataset, create a file named
199
+ `example_coco.py` with the following contents in the same directory that contains
200
+ the `dataset_examples/` folder:
159
201
 
160
202
  ```python
161
- from pathlib import Path
203
+ # example_coco.py
162
204
 
205
+ from pathlib import Path
163
206
  import lightly_studio as ls
164
207
 
165
- current_dir = Path(__file__).resolve().parent
166
-
167
208
  # Create a dataset and add the samples from the coco format
168
209
  dataset = ls.Dataset.create()
169
210
  dataset.add_samples_from_coco(
170
- annotations_json=current_dir / "instances_train2017.json",
171
- images_path=current_dir / "images",
211
+ annotations_json="dataset_examples/coco_subset_128_images/instances_train2017.json",
212
+ images_path="dataset_examples/coco_subset_128_images/images",
172
213
  annotation_type=ls.AnnotationType.INSTANCE_SEGMENTATION,
173
214
  )
174
215
 
@@ -176,6 +217,14 @@ dataset.add_samples_from_coco(
176
217
  ls.start_gui()
177
218
  ```
178
219
 
220
+ Run the script:
221
+
222
+ ```
223
+ python example_coco.py
224
+ ```
225
+
226
+ When you are done, stop the app by pressing Ctrl+C in the terminal.
227
+
179
228
  <details>
180
229
  <summary>The COCO format details:</summary>
181
230
 
@@ -219,6 +268,53 @@ dataset.add_samples_from_path(path="/path/to/image_dataset")
219
268
  ls.start_gui()
220
269
  ```
221
270
 
271
+ #### ☁️ Cloud Storage Support
272
+
273
+ #### Installation with Cloud Storage Support
274
+
275
+ ```shell
276
+ pip install lightly-studio[cloud-storage]
277
+ ```
278
+
279
+ #### Example: Loading Dataset from Cloud Storage
280
+
281
+ ```python
282
+ import lightly_studio as ls
283
+
284
+ dataset = ls.Dataset.create()
285
+
286
+ # Load dataset from S3
287
+ dataset.add_samples_from_path(path="s3://my-bucket/path/to/images/")
288
+
289
+ # You can use glob pattern in the file path
290
+ dataset.add_samples_from_path(path="s3://my-bucket/path/to/images/**/*.jpg") # matches all .jpg files recursively
291
+
292
+ # Load dataset from gcs
293
+ dataset.add_samples_from_path(path="gs://path/to/images/")
294
+
295
+ ls.start_gui()
296
+ ```
297
+
298
+ **Note**: Currently, cloud storage support is limited to loading images only. Annotation files (YOLO labels, COCO JSON files, etc.) cannot be loaded directly from cloud storage paths.
299
+
300
+ #### Authentication
301
+
302
+ **Important**: Cloud storage authentication must be configured before running LightlyStudio. The application relies on your existing cloud storage credentials and will not prompt for authentication.
303
+
304
+ #### AWS S3
305
+
306
+ You can use either of the following two options:
307
+
308
+ - **Set environment variables manually**: Set `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` (LightlyStudio uses `s3fs` under the hood to connect to S3)
309
+ - **Authenticate using AWS CLI**: Run `aws configure` (this will automatically set the environment variables that LightlyStudio can access)
310
+
311
+ #### Google Cloud Storage
312
+
313
+ You can use either of the following two options:
314
+
315
+ - **Set environment variable manually**: Set `GOOGLE_APPLICATION_CREDENTIALS` pointing to your service account key file (LightlyStudio uses `gcsfs` under the hood to connect to GCS)
316
+ - **Authenticate using gcloud CLI**: Run `gcloud auth application-default login` (this will automatically set the environment variables that LightlyStudio can access)
317
+
222
318
  #### Load Images With Annotations
223
319
 
224
320
  The `Dataset` currently supports:
@@ -530,6 +626,16 @@ In some use cases, one might want to assign a tag to the samples that are the re
530
626
  query.add_tag("tag_name")
531
627
  ```
532
628
 
629
+ #### Export Samples
630
+
631
+ Currently, exporting to the COCO object detection format is supported. The following example shows how to export the samples in the query to a COCO JSON file:
632
+
633
+ ```py
634
+ from pathlib import Path
635
+
636
+ query.export().to_coco_object_detections(Path("coco_export.json"))
637
+ ```
638
+
533
639
  ### Examples
534
640
 
535
641
  #### Add Custom Metadata
@@ -601,7 +707,9 @@ import os
601
707
  os.environ["LIGHTLY_STUDIO_LICENSE_KEY"] = "license_key_here"
602
708
  ```
603
709
 
604
- The selection can be configured directly from a `DatasetQuery`. The example below showcases a simple case of selecting diverse samples.
710
+ #### Diversity Selection
711
+
712
+ Diversity selection can be configured directly from a `DatasetQuery`. The example below showcases a simple case of selecting diverse samples.
605
713
 
606
714
  ```py
607
715
  import lightly_studio as ls
@@ -619,6 +727,57 @@ dataset.query().selection().diverse(
619
727
  ls.start_gui()
620
728
  ```
621
729
 
730
+ #### Metadata Weighting Selection
731
+
732
+ You can select samples based on the values of a metadata field. The example below showcases a simple case of selecting samples with the highest metadata value.
733
+
734
+ ```py
735
+ import lightly_studio as ls
736
+
737
+ # Load your dataset
738
+ dataset = ls.Dataset.load_or_create()
739
+ dataset.add_samples_from_path(path="/path/to/image_dataset")
740
+ # Compute and store 'typicality' metadata.
741
+ dataset.compute_typicality_metadata(metadata_name="typicality")
742
+
743
+ # Select the 5 samples with the highest 'typicality' scores.
744
+ dataset.query().selection().metadata_weighting(
745
+ n_samples_to_select=5,
746
+ selection_result_tag_name="metadata_weighting_selection",
747
+ metadata_key="typicality",
748
+ )
749
+ ```
750
+
751
+ #### Selection Based on Multiple Strategies
752
+
753
+ You can configure multiple strategies, the selection takes into account all of them at the same time, weighted by the `strength` parameter.
754
+
755
+ ```py
756
+ import lightly_studio as ls
757
+ from lightly_studio.selection.selection_config import (
758
+ MetadataWeightingStrategy,
759
+ EmbeddingDiversityStrategy,
760
+ )
761
+
762
+ # Load your dataset
763
+ dataset = ls.Dataset.load_or_create()
764
+ dataset.add_samples_from_path(path="/path/to/image_dataset")
765
+ # Compute typicality and store it as `typicality` metadata
766
+ dataset.compute_typicality_metadata(metadata_name="typicality")
767
+
768
+ # Select 10 samples by combining typicality and diversity, diversity having double the strength.
769
+ dataset.query().selection().multi_strategies(
770
+ n_samples_to_select=10,
771
+ selection_result_tag_name="multi_strategy_selection",
772
+ selection_strategies=[
773
+ MetadataWeightingStrategy(metadata_key="typicality", strength=1.0),
774
+ EmbeddingDiversityStrategy(embedding_model_name="my_model_name", strength=2.0),
775
+ ],
776
+ )
777
+ ```
778
+
779
+ #### Exporting Selected Samples
780
+
622
781
  The selected sample paths can be exported via the GUI, or by a script:
623
782
 
624
783
  ```py
@@ -1,37 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: lightly-studio
3
- Version: 0.3.2
4
- Summary: LightlyStudio is a lightweight, fast, and easy-to-use data exploration tool for data scientists and engineers.
5
- Classifier: Operating System :: MacOS :: MacOS X
6
- Classifier: Operating System :: Microsoft :: Windows
7
- Classifier: Operating System :: POSIX :: Linux
8
- Classifier: Programming Language :: Python :: 3
9
- Classifier: Programming Language :: Python :: 3.8
10
- Classifier: Programming Language :: Python :: 3.9
11
- Classifier: Programming Language :: Python :: 3.10
12
- Classifier: Programming Language :: Python :: 3.11
13
- Requires-Python: >=3.8
14
- Requires-Dist: annotated-types==0.7.0
15
- Requires-Dist: duckdb-engine<0.17,>=0.15.0
16
- Requires-Dist: duckdb<1.3,>=1.2.2
17
- Requires-Dist: environs<12.0.0
18
- Requires-Dist: eval-type-backport>=0.2.2
19
- Requires-Dist: fastapi>=0.115.5
20
- Requires-Dist: faster-coco-eval>=1.6.5
21
- Requires-Dist: fsspec>=2023.1.0
22
- Requires-Dist: labelformat>=0.1.7
23
- Requires-Dist: lightly-mundig==0.1.3
24
- Requires-Dist: open-clip-torch>=2.20.0
25
- Requires-Dist: python-multipart>=0.0.20
26
- Requires-Dist: scikit-learn==1.3.2
27
- Requires-Dist: sqlmodel>=0.0.22
28
- Requires-Dist: torchmetrics>=1.5.2
29
- Requires-Dist: tqdm>=4.65.0
30
- Requires-Dist: typing-extensions>=4.12.2
31
- Requires-Dist: uvicorn>=0.32.1
32
- Requires-Dist: xxhash>=3.5.0
33
- Description-Content-Type: text/markdown
34
-
35
1
  <div align="center">
36
2
  <p align="center">
37
3
 
@@ -113,41 +79,46 @@ python -m venv venv
113
79
  .\venv\Scripts\activate
114
80
 
115
81
  # 2. Install LightlyStudio
116
- pip install lightly_studio
82
+ pip install lightly-studio
117
83
  ```
118
84
 
119
85
  ## **Quickstart**
120
86
 
121
- Download the dataset and run a quickstart script to load your dataset and launch the app.
122
-
123
- ### YOLO Object Detection
124
-
125
- To run an example using a yolo dataset, clone the example repository and run the example script from below:
87
+ Download example datasets by cloning the example repository:
126
88
 
127
89
  ```shell
128
90
  git clone https://github.com/lightly-ai/dataset_examples dataset_examples
129
91
  ```
130
92
 
131
- **`example_yolo.py` script to explore the dataset:**
93
+ ### YOLO Object Detection
94
+
95
+ To run an example using a YOLO dataset, create a file named `example_yolo.py` with the
96
+ following contents in the same directory that contains the `dataset_examples/` folder:
132
97
 
133
98
  ```python
134
- from pathlib import Path
99
+ # example_yolo.py
135
100
 
101
+ from pathlib import Path
136
102
  import lightly_studio as ls
137
103
 
138
- data_yaml_path = Path(__file__).resolve().parent / "data.yaml"
139
-
140
104
  # Create a dataset and add the samples from the yolo format
141
105
  dataset = ls.Dataset.create()
142
106
  dataset.add_samples_from_yolo(
143
- data_yaml=data_yaml_path,
107
+ data_yaml="dataset_examples/road_signs_yolo/data.yaml",
144
108
  input_split="test",
145
109
  )
146
110
 
147
111
  # Start the UI application on the port 8001.
148
112
  ls.start_gui()
113
+ ```
114
+
115
+ Run the script:
149
116
 
150
117
  ```
118
+ python example_yolo.py
119
+ ```
120
+
121
+ When you are done, stop the app by pressing Ctrl+C in the terminal.
151
122
 
152
123
  <details>
153
124
  <summary>The YOLO format details:</summary>
@@ -183,26 +154,21 @@ Where coordinates are normalized between 0 and 1.
183
154
 
184
155
  ### COCO Instance Segmentation
185
156
 
186
- To run an instance segmentation example using a COCO dataset, clone the example repository and run the example script from below:
187
-
188
- ```shell
189
- git clone https://github.com/lightly-ai/dataset_examples dataset_examples
190
- ```
191
-
192
- **`example_coco.py` script to explore the dataset:**
157
+ To run an instance segmentation example using a COCO dataset, create a file named
158
+ `example_coco.py` with the following contents in the same directory that contains
159
+ the `dataset_examples/` folder:
193
160
 
194
161
  ```python
195
- from pathlib import Path
162
+ # example_coco.py
196
163
 
164
+ from pathlib import Path
197
165
  import lightly_studio as ls
198
166
 
199
- current_dir = Path(__file__).resolve().parent
200
-
201
167
  # Create a dataset and add the samples from the coco format
202
168
  dataset = ls.Dataset.create()
203
169
  dataset.add_samples_from_coco(
204
- annotations_json=current_dir / "instances_train2017.json",
205
- images_path=current_dir / "images",
170
+ annotations_json="dataset_examples/coco_subset_128_images/instances_train2017.json",
171
+ images_path="dataset_examples/coco_subset_128_images/images",
206
172
  annotation_type=ls.AnnotationType.INSTANCE_SEGMENTATION,
207
173
  )
208
174
 
@@ -210,6 +176,14 @@ dataset.add_samples_from_coco(
210
176
  ls.start_gui()
211
177
  ```
212
178
 
179
+ Run the script:
180
+
181
+ ```
182
+ python example_coco.py
183
+ ```
184
+
185
+ When you are done, stop the app by pressing Ctrl+C in the terminal.
186
+
213
187
  <details>
214
188
  <summary>The COCO format details:</summary>
215
189
 
@@ -253,6 +227,53 @@ dataset.add_samples_from_path(path="/path/to/image_dataset")
253
227
  ls.start_gui()
254
228
  ```
255
229
 
230
+ #### ☁️ Cloud Storage Support
231
+
232
+ #### Installation with Cloud Storage Support
233
+
234
+ ```shell
235
+ pip install lightly-studio[cloud-storage]
236
+ ```
237
+
238
+ #### Example: Loading Dataset from Cloud Storage
239
+
240
+ ```python
241
+ import lightly_studio as ls
242
+
243
+ dataset = ls.Dataset.create()
244
+
245
+ # Load dataset from S3
246
+ dataset.add_samples_from_path(path="s3://my-bucket/path/to/images/")
247
+
248
+ # You can use glob pattern in the file path
249
+ dataset.add_samples_from_path(path="s3://my-bucket/path/to/images/**/*.jpg") # matches all .jpg files recursively
250
+
251
+ # Load dataset from gcs
252
+ dataset.add_samples_from_path(path="gs://path/to/images/")
253
+
254
+ ls.start_gui()
255
+ ```
256
+
257
+ **Note**: Currently, cloud storage support is limited to loading images only. Annotation files (YOLO labels, COCO JSON files, etc.) cannot be loaded directly from cloud storage paths.
258
+
259
+ #### Authentication
260
+
261
+ **Important**: Cloud storage authentication must be configured before running LightlyStudio. The application relies on your existing cloud storage credentials and will not prompt for authentication.
262
+
263
+ #### AWS S3
264
+
265
+ You can use either of the following two options:
266
+
267
+ - **Set environment variables manually**: Set `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` (LightlyStudio uses `s3fs` under the hood to connect to S3)
268
+ - **Authenticate using AWS CLI**: Run `aws configure` (this will automatically set the environment variables that LightlyStudio can access)
269
+
270
+ #### Google Cloud Storage
271
+
272
+ You can use either of the following two options:
273
+
274
+ - **Set environment variable manually**: Set `GOOGLE_APPLICATION_CREDENTIALS` pointing to your service account key file (LightlyStudio uses `gcsfs` under the hood to connect to GCS)
275
+ - **Authenticate using gcloud CLI**: Run `gcloud auth application-default login` (this will automatically set the environment variables that LightlyStudio can access)
276
+
256
277
  #### Load Images With Annotations
257
278
 
258
279
  The `Dataset` currently supports:
@@ -564,6 +585,16 @@ In some use cases, one might want to assign a tag to the samples that are the re
564
585
  query.add_tag("tag_name")
565
586
  ```
566
587
 
588
+ #### Export Samples
589
+
590
+ Currently, exporting to the COCO object detection format is supported. The following example shows how to export the samples in the query to a COCO JSON file:
591
+
592
+ ```py
593
+ from pathlib import Path
594
+
595
+ query.export().to_coco_object_detections(Path("coco_export.json"))
596
+ ```
597
+
567
598
  ### Examples
568
599
 
569
600
  #### Add Custom Metadata
@@ -635,7 +666,9 @@ import os
635
666
  os.environ["LIGHTLY_STUDIO_LICENSE_KEY"] = "license_key_here"
636
667
  ```
637
668
 
638
- The selection can be configured directly from a `DatasetQuery`. The example below showcases a simple case of selecting diverse samples.
669
+ #### Diversity Selection
670
+
671
+ Diversity selection can be configured directly from a `DatasetQuery`. The example below showcases a simple case of selecting diverse samples.
639
672
 
640
673
  ```py
641
674
  import lightly_studio as ls
@@ -653,6 +686,57 @@ dataset.query().selection().diverse(
653
686
  ls.start_gui()
654
687
  ```
655
688
 
689
+ #### Metadata Weighting Selection
690
+
691
+ You can select samples based on the values of a metadata field. The example below showcases a simple case of selecting samples with the highest metadata value.
692
+
693
+ ```py
694
+ import lightly_studio as ls
695
+
696
+ # Load your dataset
697
+ dataset = ls.Dataset.load_or_create()
698
+ dataset.add_samples_from_path(path="/path/to/image_dataset")
699
+ # Compute and store 'typicality' metadata.
700
+ dataset.compute_typicality_metadata(metadata_name="typicality")
701
+
702
+ # Select the 5 samples with the highest 'typicality' scores.
703
+ dataset.query().selection().metadata_weighting(
704
+ n_samples_to_select=5,
705
+ selection_result_tag_name="metadata_weighting_selection",
706
+ metadata_key="typicality",
707
+ )
708
+ ```
709
+
710
+ #### Selection Based on Multiple Strategies
711
+
712
+ You can configure multiple strategies, the selection takes into account all of them at the same time, weighted by the `strength` parameter.
713
+
714
+ ```py
715
+ import lightly_studio as ls
716
+ from lightly_studio.selection.selection_config import (
717
+ MetadataWeightingStrategy,
718
+ EmbeddingDiversityStrategy,
719
+ )
720
+
721
+ # Load your dataset
722
+ dataset = ls.Dataset.load_or_create()
723
+ dataset.add_samples_from_path(path="/path/to/image_dataset")
724
+ # Compute typicality and store it as `typicality` metadata
725
+ dataset.compute_typicality_metadata(metadata_name="typicality")
726
+
727
+ # Select 10 samples by combining typicality and diversity, diversity having double the strength.
728
+ dataset.query().selection().multi_strategies(
729
+ n_samples_to_select=10,
730
+ selection_result_tag_name="multi_strategy_selection",
731
+ selection_strategies=[
732
+ MetadataWeightingStrategy(metadata_key="typicality", strength=1.0),
733
+ EmbeddingDiversityStrategy(embedding_model_name="my_model_name", strength=2.0),
734
+ ],
735
+ )
736
+ ```
737
+
738
+ #### Exporting Selected Samples
739
+
656
740
  The selected sample paths can be exported via the GUI, or by a script:
657
741
 
658
742
  ```py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lightly-studio"
3
- version = "0.3.2"
3
+ version = "0.3.3"
4
4
  description = "LightlyStudio is a lightweight, fast, and easy-to-use data exploration tool for data scientists and engineers."
5
5
  readme = "USAGE.md"
6
6
  requires-python = ">=3.8"
@@ -29,7 +29,6 @@ dependencies = [
29
29
  "eval-type-backport>=0.2.2",
30
30
  "xxhash>=3.5.0",
31
31
  "scikit-learn==1.3.2",
32
- "torchmetrics>=1.5.2",
33
32
  "faster-coco-eval>=1.6.5",
34
33
  "python-multipart>=0.0.20",
35
34
  "environs<12.0.0",
@@ -37,7 +36,26 @@ dependencies = [
37
36
  # Public Mundig versions are found at https://pypi.org/project/lightly-mundig/
38
37
  # Internal Mundig versions are found at
39
38
  # https://console.cloud.google.com/artifacts/python/boris-250909/europe-west3/lightly-pypi/lightly-mundig
40
- "lightly-mundig==0.1.3",
39
+ #
40
+ # To update to an internal version, first install the new version
41
+ # uv pip install --upgrade --keyring-provider subprocess --extra-index-url \
42
+ # https://oauth2accesstoken@europe-west3-python.pkg.dev/boris-250909/lightly-pypi/simple/ \
43
+ # lightly-mundig==$version
44
+ # Then lock the version. The uv.lock file is updated accordingly.
45
+ # uv lock --upgrade-package lightly-mundig==$version
46
+ "lightly-mundig==0.1.4",
47
+ "pyarrow>=17.0.0",
48
+ ]
49
+
50
+ [project.optional-dependencies]
51
+ lightly-edge = [
52
+ "lightly-edge-sdk>=1.0.1b2",
53
+ "opencv-python",
54
+ ]
55
+ cloud-storage = [
56
+ "s3fs>=2023.1.0",
57
+ "gcsfs>=2023.1.0",
58
+ "adlfs>=2023.1.0",
41
59
  ]
42
60
 
43
61
  [dependency-groups]
@@ -55,14 +73,7 @@ dev = [
55
73
  "types-PyYAML>=6.0.0",
56
74
  "pytest-xdist>=3.6.1",
57
75
  ]
58
- lightly-edge = [
59
- "lightly-edge-sdk>=1.0.1b2",
60
- "opencv-python",
61
- ]
62
- cloud-storage = [
63
- "s3fs>=2023.1.0",
64
- "gcsfs>=2023.1.0",
65
- ]
76
+
66
77
 
67
78
  [tool.mypy]
68
79
  strict = true
@@ -77,6 +88,14 @@ exclude = [
77
88
  module = "fsspec.*"
78
89
  ignore_missing_imports = true
79
90
 
91
+ [[tool.mypy.overrides]]
92
+ module = "pyarrow.*"
93
+ ignore_missing_imports = true
94
+
95
+ [[tool.mypy.overrides]]
96
+ module = "sklearn.manifold.*"
97
+ ignore_missing_imports = true
98
+
80
99
 
81
100
  [tool.pytest.ini_options]
82
101
  # Make pytest discover all files in the tests directory. This is useful for showing
@@ -6,6 +6,6 @@ from lightly_studio.core.start_gui import start_gui
6
6
 
7
7
  # TODO (Jonas 08/25): This will be removed as soon as the new interface is used in the examples
8
8
  from lightly_studio.dataset.loader import DatasetLoader
9
- from lightly_studio.models.annotation_task import AnnotationType
9
+ from lightly_studio.models.annotation.annotation_base import AnnotationType
10
10
 
11
11
  __all__ = ["AnnotationType", "Dataset", "DatasetLoader", "start_gui"]
@@ -16,14 +16,15 @@ from lightly_studio.api.routes import healthz, images, webapp
16
16
  from lightly_studio.api.routes.api import (
17
17
  annotation,
18
18
  annotation_label,
19
- annotation_task,
20
19
  classifier,
21
20
  dataset,
22
21
  dataset_tag,
22
+ embeddings2d,
23
+ export,
23
24
  features,
24
25
  metadata,
25
- metrics,
26
26
  sample,
27
+ selection,
27
28
  settings,
28
29
  text_embedding,
29
30
  )
@@ -84,16 +85,17 @@ api_router = APIRouter(prefix="/api", tags=["api"])
84
85
 
85
86
  api_router.include_router(dataset.dataset_router)
86
87
  api_router.include_router(dataset_tag.tag_router)
88
+ api_router.include_router(export.export_router)
87
89
  api_router.include_router(sample.samples_router)
88
90
  api_router.include_router(annotation_label.annotations_label_router)
89
91
  api_router.include_router(annotation.annotations_router)
90
92
  api_router.include_router(text_embedding.text_embedding_router)
91
- api_router.include_router(annotation_task.router)
92
93
  api_router.include_router(settings.settings_router)
93
94
  api_router.include_router(classifier.classifier_router)
95
+ api_router.include_router(embeddings2d.embeddings2d_router)
94
96
  api_router.include_router(features.features_router)
95
97
  api_router.include_router(metadata.metadata_router)
96
- api_router.include_router(metrics.metrics_router)
98
+ api_router.include_router(selection.selection_router)
97
99
 
98
100
 
99
101
  app.include_router(api_router)