scipion-em-xmipp 24.6.0.0__py3-none-any.whl → 24.12.2__py3-none-any.whl

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.
Files changed (56) hide show
  1. {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/METADATA +8 -7
  2. {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/RECORD +51 -47
  3. {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/WHEEL +1 -1
  4. xmipp3/__init__.py +110 -92
  5. xmipp3/checkProtocolsConf.py +117 -0
  6. xmipp3/constants.py +3 -0
  7. xmipp3/convert/convert.py +31 -10
  8. xmipp3/protocols/__init__.py +4 -2
  9. xmipp3/protocols/protocol_apply_tilt_to_ctf.py +114 -0
  10. xmipp3/protocols/protocol_cl2d.py +1 -1
  11. xmipp3/protocols/protocol_cl2d_clustering.py +303 -0
  12. xmipp3/protocols/protocol_classify_pca.py +3 -1
  13. xmipp3/protocols/protocol_classify_pca_streaming.py +1 -0
  14. xmipp3/protocols/protocol_compare_reprojections.py +2 -2
  15. xmipp3/protocols/protocol_convert_pdb.py +9 -4
  16. xmipp3/protocols/protocol_create_gallery.py +84 -12
  17. xmipp3/protocols/protocol_ctf_consensus.py +186 -273
  18. xmipp3/protocols/protocol_ctf_defocus_group.py +4 -4
  19. xmipp3/protocols/protocol_ctf_micrographs.py +12 -1
  20. xmipp3/protocols/protocol_deep_center.py +2 -2
  21. xmipp3/protocols/protocol_deep_center_predict.py +140 -0
  22. xmipp3/protocols/protocol_extract_particles.py +1 -1
  23. xmipp3/protocols/protocol_flexalign.py +46 -47
  24. xmipp3/protocols/protocol_mics_defocus_balancer.py +341 -0
  25. xmipp3/protocols/protocol_movie_alignment_consensus.py +1 -1
  26. xmipp3/protocols/protocol_movie_dose_analysis.py +159 -77
  27. xmipp3/protocols/protocol_movie_gain.py +5 -1
  28. xmipp3/protocols/protocol_movie_max_shift.py +246 -178
  29. xmipp3/protocols/protocol_reconstruct_fourier.py +29 -14
  30. xmipp3/protocols/protocol_reconstruct_highres.py +15 -2
  31. xmipp3/protocols/protocol_simulate_ctf.py +1 -1
  32. xmipp3/protocols/protocol_subtract_projection.py +89 -28
  33. xmipp3/protocols/protocol_tilt_analysis.py +95 -191
  34. xmipp3/protocols/protocol_trigger_data.py +22 -12
  35. xmipp3/protocols/protocol_validate_fscq.py +1 -1
  36. xmipp3/protocols/protocol_volume_adjust_sub.py +0 -4
  37. xmipp3/protocols/protocol_volume_local_sharpening.py +34 -24
  38. xmipp3/protocols.conf +141 -115
  39. xmipp3/tests/test_protocols_deepcenter_predict.py +66 -0
  40. xmipp3/tests/test_protocols_xmipp_2d.py +27 -7
  41. xmipp3/tests/test_protocols_xmipp_3d.py +16 -755
  42. xmipp3/tests/test_protocols_xmipp_mics.py +43 -4
  43. xmipp3/tests/test_protocols_xmipp_movies.py +0 -169
  44. xmipp3/version.py +38 -0
  45. xmipp3/viewers/__init__.py +3 -1
  46. xmipp3/viewers/viewer_apply_tilt_to_ctf.py +81 -0
  47. xmipp3/viewers/viewer_cl2d_clustering.py +131 -0
  48. xmipp3/viewers/viewer_movie_alignment.py +3 -9
  49. xmipp3/protocols/protocol_angular_resolution_alignment.py +0 -204
  50. xmipp3/protocols/protocol_movie_opticalflow.py +0 -416
  51. xmipp3/tests/test_protocols_angular_resolution_alignment.py +0 -88
  52. xmipp3/tests/test_protocols_mixed_movies.py +0 -149
  53. xmipp3/viewers/viewer_angular_resolution_alignment.py +0 -148
  54. {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/LICENSE +0 -0
  55. {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/entry_points.txt +0 -0
  56. {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/top_level.txt +0 -0
@@ -1,21 +1,22 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scipion-em-xmipp
3
- Version: 24.6.0.0
4
- Summary: Plugin to use Xmipp programs within the Scipion framework (see https://scipion-em.github.io/docs/).
3
+ Version: 24.12.2
4
+ Summary: Plugin to use Xmipp programs within the Scipion framework (see https://xmipp.i2pc.es/).
5
5
  Home-page: https://github.com/i2pc/scipion-em-xmipp
6
6
  Author: I2PC
7
- Author-email: scipion@cnb.csic.es
7
+ Author-email: xmipp@cnb.csic.es
8
8
  License: UNKNOWN
9
9
  Keywords: scipion cryoem imageprocessing scipion-3.0
10
10
  Platform: UNKNOWN
11
- Requires-Dist: scipion-pyworkflow >=3.0.31
12
- Requires-Dist: scikit-learn ==0.22
11
+ Requires-Dist: scipion-pyworkflow>=3.0.31
12
+ Requires-Dist: scikit-learn>=1.2
13
+ Requires-Dist: scikit-image
13
14
  Requires-Dist: scipion-em
14
- Requires-Dist: scipy <=1.10.0
15
+ Requires-Dist: scipion-app
16
+ Requires-Dist: scipy<=1.10.0
15
17
  Requires-Dist: joblib
16
18
  Requires-Dist: peppercorn
17
19
  Requires-Dist: plotter
18
- Requires-Dist: scons
19
20
  Requires-Dist: PyWavelets
20
21
 
21
22
  [![Build](https://github.com/I2PC/scipion-em-xmipp/actions/workflows/build.yml/badge.svg)](https://github.com/I2PC/scipion-em-xmipp/actions/workflows/build.yml)
@@ -1,65 +1,69 @@
1
- xmipp3/__init__.py,sha256=Bc3CesJmNp5xxqL5CBfhPOWrkf14NyW7W0rm4htDsrQ,13303
1
+ xmipp3/__init__.py,sha256=3845iUcBXhJdilaAZh_oB76sDuzfmVms4TiFzVWDpV4,12226
2
2
  xmipp3/base.py,sha256=pFu7FZjm4WeqWbLZJwbmGH3-2YixAIpKyWMFvVrsBYc,21220
3
3
  xmipp3/bibtex.py,sha256=YZjuuB_9RC4QOOy5r86cRX3ze2EWz43iGzIDQvtu5HQ,28310
4
- xmipp3/constants.py,sha256=ND8PUJyUIP3IS3kbq0tZqk77Yq0c4WotRUj_r2gEDxo,3833
4
+ xmipp3/checkProtocolsConf.py,sha256=eJhADp1lv3Mdwe5yYdsVJcVzjelUCqoLHs43XSGzrDo,4428
5
+ xmipp3/constants.py,sha256=SjO3ViST8YrLIn49QqymQNrNwzM1wzG9VOupvnyM-_U,3953
5
6
  xmipp3/programs.py,sha256=yrMD0EHEq5j_ODCeINbaCp4CEqSgkmioan1O1mAgPY0,11968
6
- xmipp3/protocols.conf,sha256=Dwg5S_PBQV9wy5n5CmEppB75P4Nmur2l1FsKLrMCde8,12631
7
+ xmipp3/protocols.conf,sha256=6zuA9QdZ_HVaPc0mxqn3oGWJVQtdCVZIJeceMYw4J6I,15148
7
8
  xmipp3/utils.py,sha256=JKuEdR40rn6pdm0puwsgzItbNnrFL4sa7pBymVtRzLM,9125
9
+ xmipp3/version.py,sha256=ZhxJ-ScXQm8YwCeHUy6dEH_NToDwkMQr5jx6moVa13s,1807
8
10
  xmipp3/wizards.py,sha256=kS2ctLuy46m-8XPWrd2705V9Gxbhf4UBa4vKJ8eqius,20343
9
11
  xmipp3/xmipp_logo.png,sha256=ggrFNUy5UEBjvKfNvu0T14Kzolnhc-ij9AQ734R27MY,84496
10
12
  xmipp3/convert/__init__.py,sha256=y231wRpfDySMgyjLi6xYuO3hTG1NZBNnMRT7dNnYqu8,1211
11
- xmipp3/convert/convert.py,sha256=ikxH7kMUvUUbmikalhPJ5tG8rWTCEGPhx73PoAFQXB0,62304
13
+ xmipp3/convert/convert.py,sha256=_8wbBzv714l2rfQyj1pvjXP9VPLs7gvk_fiFJYzmctU,63217
12
14
  xmipp3/convert/dataimport.py,sha256=ssmMLKU1qXDuqjStNJv-zfYNJAJ-0k7EzNyF4jf91IU,13292
13
15
  xmipp3/convert/io_coordinates.py,sha256=ZUKEbL7DjJ0jDVJzs2Nnc-sX7QYuAyGSponhP6WYMDI,1963
14
- xmipp3/protocols/__init__.py,sha256=cE4L0pNHeQdeZsEbs9dHNa-6gPdM1V5G23-OMuWlCUE,8301
16
+ xmipp3/protocols/__init__.py,sha256=V34OLNcejL0Hywls2IoFAcD9GmgaSckUOK-ZNwsMGS8,8406
15
17
  xmipp3/protocols/protocol_align_volume.py,sha256=uxFtsb9cB0tz9QkyXvR3pK5457x9sq9F-qyeuOeA2go,19070
16
18
  xmipp3/protocols/protocol_align_volume_and_particles.py,sha256=g5dpZfq_iggeTFt2-3iGvc8zFQY_5EaiBg0gycEKPLw,10735
17
19
  xmipp3/protocols/protocol_analyze_local_ctf.py,sha256=O1_xWXuKDRGvhhd-BQ1DRMKti_KDqNN_kALzUhvN3DQ,7446
18
20
  xmipp3/protocols/protocol_angular_graph_consistency.py,sha256=aK-59_JQ849_-drD_R5NjhW9lSwy0-4WtB0Ig5UyLgQ,30300
19
- xmipp3/protocols/protocol_angular_resolution_alignment.py,sha256=EsKm1PfGkkpnzoKuhZqM-e1_99_XVtIBOIGhlgg45qM,8521
20
21
  xmipp3/protocols/protocol_apply_alignment.py,sha256=TL89xGiYtPN5mlEhU4R-6yLEzjxIyx2TStiTyXdkvKw,5958
22
+ xmipp3/protocols/protocol_apply_tilt_to_ctf.py,sha256=WiWBip-lU4ApdDbilQbckSf_ueXmNhcfSKAUxhH1EeY,5287
21
23
  xmipp3/protocols/protocol_apply_transformation_matrix.py,sha256=TJJ7IQK_FM_-3488iBCH6JQSnBLBhPg78mYXN2E2PAk,4891
22
24
  xmipp3/protocols/protocol_apply_zernike3d.py,sha256=aHb-6oFCLIZV49OXlft_VQgmcO9vd65-g-KFPK-Arbw,10506
23
25
  xmipp3/protocols/protocol_assignment_tilt_pair.py,sha256=4bjhPZbffm2jIZV4LLbrw-_fhNbzZVPf1UmzbqhpK_o,10332
24
26
  xmipp3/protocols/protocol_break_symmetry.py,sha256=OZvOOsyFMX-pdk69rYo546AxvRZtRFs0GmuT9Vkv6mc,6183
25
27
  xmipp3/protocols/protocol_center_particles.py,sha256=2ug42YlvD7PidOLC1EL6U4b-WFm9i6UF8ggn_ksC14E,11159
26
- xmipp3/protocols/protocol_cl2d.py,sha256=ovh25H8QbcdsmqV1J0M-1d3vzbQYnTT6WH2O2hkohEg,27500
28
+ xmipp3/protocols/protocol_cl2d.py,sha256=yxILvNNWL_1Mazgo9_r4bQopGSMsF0c4bZ0H7l1awMQ,27497
27
29
  xmipp3/protocols/protocol_cl2d_align.py,sha256=RF_WVqNMnLGXALW5LyIQ43JmoysSyYcrV5vOsnef0oY,8279
30
+ xmipp3/protocols/protocol_cl2d_clustering.py,sha256=MjYS5w_lU9Jd9SPRE_8ttWYeeDkwnK3mb_o9YUku8s0,13334
28
31
  xmipp3/protocols/protocol_classes_2d_mapping.py,sha256=oq6me8X4v4qFJt-GtJ4S1y64qkPCmUVWHkfMgK8XCcA,18032
29
- xmipp3/protocols/protocol_classify_pca.py,sha256=PepVs7BOgJ-0mbZLjr-gJN58X3n51e3ujbN5AkxUPvU,20288
30
- xmipp3/protocols/protocol_classify_pca_streaming.py,sha256=Lpm33qPG4gR9xW9MYqdsHiFOV_jzEsqyw6vRx2sZRTw,22015
32
+ xmipp3/protocols/protocol_classify_pca.py,sha256=M-dHSHT-qrPzBbW84Olm91ZxTI2Lvl4LexIBNWYh7zI,20340
33
+ xmipp3/protocols/protocol_classify_pca_streaming.py,sha256=aMu5j_QC_NKsKHwthJEtoEYL4a4bNfILgmhZaf2RS0g,22083
31
34
  xmipp3/protocols/protocol_compare_angles.py,sha256=NIoQjym4aH3BsMJ7RaMmyswEl9gHkxMnnkQQJdAQaCw,8034
32
- xmipp3/protocols/protocol_compare_reprojections.py,sha256=H4QN60KdXlspxv_SR4JF3YVT01tovgGv6dfDTf0OENc,31250
35
+ xmipp3/protocols/protocol_compare_reprojections.py,sha256=HNoQtRT_k0MslTbGWBVQfi9M3Sz2QMZmSMinFGCI1uI,31253
33
36
  xmipp3/protocols/protocol_consensus_classes.py,sha256=En9qEsEpkRqXE0BUOHvJI8b6VTrsZfpgd2x2GTj32eU,24604
34
37
  xmipp3/protocols/protocol_consensus_local_ctf.py,sha256=qJrZ1GVJgaNmX60_GvbUDg-qg3FqXnfoLXWhfoXiJss,9953
35
- xmipp3/protocols/protocol_convert_pdb.py,sha256=tSDLzyL7xidVToD3bw-9yi80U9BCLOR6RWxr0bWaRj8,15488
38
+ xmipp3/protocols/protocol_convert_pdb.py,sha256=KfilRGZ5GQKrYOCw9N8FCMzAhTe6FR9DWyOBnk-gUgc,15782
36
39
  xmipp3/protocols/protocol_core_analysis.py,sha256=Bt2cgf4PGZB_HjmthRtdIQGT7ri-pV5vNRChm07oHB4,9919
37
- xmipp3/protocols/protocol_create_gallery.py,sha256=GwuJxJLkPlxZxUSt-J8oDgPN7wWmFBd4iPENcve_JIY,5970
38
- xmipp3/protocols/protocol_ctf_consensus.py,sha256=_ug1EQG9COSWK-VHIsMXXDthK4tbRPgt7QUqJyyYrFQ,42582
40
+ xmipp3/protocols/protocol_create_gallery.py,sha256=ldOimkkf1D9cLNuexvFTxkcVJQr1YRETidTbXmp-lF8,8753
41
+ xmipp3/protocols/protocol_ctf_consensus.py,sha256=WRSYKdD_nOoqIYpEJJOhCygi2PDcoUmSzSsK4dyajwM,39582
39
42
  xmipp3/protocols/protocol_ctf_correct_wiener2d.py,sha256=thDaon-jYBeXbGM_UiEwfLCeURPwD_7ycgzUzNc3T5g,5819
40
- xmipp3/protocols/protocol_ctf_defocus_group.py,sha256=c_it4w5tJAxC9HpMzcYp58cZLRXSNS4hjgeJ_L6iKkI,8304
41
- xmipp3/protocols/protocol_ctf_micrographs.py,sha256=R0ocHeLuAAiwkvhfoZF8votSXKfv1f2Vjny7mmdpf2g,28384
42
- xmipp3/protocols/protocol_deep_center.py,sha256=GGivftHKyg1wlLnfS0im9IS1NIKxXr8Fky3Yt2-3ieQ,6742
43
+ xmipp3/protocols/protocol_ctf_defocus_group.py,sha256=6x_UHiuA9WfPBhd_8rfg09Cy_j4pr6o5RCWTMMz-DPo,8333
44
+ xmipp3/protocols/protocol_ctf_micrographs.py,sha256=5bOIKOm3bdx6Qmko4Qa7o6FduZxFHvdJ7pmzwcoZCCw,28979
45
+ xmipp3/protocols/protocol_deep_center.py,sha256=JK7ojXWyGhEA6t_KmRdq3vqilkBVMWk_c7Kndj_MG_Y,6796
46
+ xmipp3/protocols/protocol_deep_center_predict.py,sha256=qxC0aDL-oz7-9LwaIcLtb1vhY9J9t254wta_bV-mpBU,6788
43
47
  xmipp3/protocols/protocol_deep_hand.py,sha256=KeKV6DHqpua1GoL3dWojYhwAHEiUxXy5Mdkr0at77ag,7185
44
48
  xmipp3/protocols/protocol_deep_micrograph_screen.py,sha256=AL9c6dqsdSOA1MCEOzYcWd5mtoCfyJyioIXALmJ4Scw,22068
45
49
  xmipp3/protocols/protocol_denoise_particles.py,sha256=_FDzQ4JlNU5_RadEq0F9TfUA8H2jvDi-0pXHcTXDkOQ,7689
46
50
  xmipp3/protocols/protocol_eliminate_empty_images.py,sha256=Xil4A_zuprSZ_LjZc79CEKib2-MrUZzxyN5bDLaYaSo,22399
47
51
  xmipp3/protocols/protocol_enrich.py,sha256=pymPJpNAHUNtECe89-pdzcVmkdNbVN7kp1PGz9NgwYg,25080
48
52
  xmipp3/protocols/protocol_extract_asymmetric_unit.py,sha256=1XOA2waEA0EY8z7iB-2ivJXbiNDegzIyYmkOxTpXseM,8356
49
- xmipp3/protocols/protocol_extract_particles.py,sha256=Mt9gOGR2c6wQ0JC0seFNRFKv1teXyASpJxw9FpbYABg,26486
53
+ xmipp3/protocols/protocol_extract_particles.py,sha256=iQ6xlMtYpWflOGcDgYZJ4XxUi-aZCassmFnPMAe69qI,26483
50
54
  xmipp3/protocols/protocol_extract_particles_movies.py,sha256=DYHNx0RRvcvnEXD6rnEYnp7gbv-hNjtjhKvK47MwpHw,23165
51
55
  xmipp3/protocols/protocol_extract_particles_pairs.py,sha256=Cg0I_hptAErRXSrtDZnSrUDMx_P2NFgrFV34pUcQFoM,29349
52
- xmipp3/protocols/protocol_flexalign.py,sha256=FCGlCLc0Rk1HomaFYj9l_DiYPrx1K-7f5DmlzSBhjzI,18498
56
+ xmipp3/protocols/protocol_flexalign.py,sha256=9Gw-TCiOLUM2uG_j0NlU9CYonSTBNyimPUhlur5ClrY,18815
53
57
  xmipp3/protocols/protocol_generate_reprojections.py,sha256=iOTrZBWGwxLAytfY1WHDDf3UxNuOHTv_DjNja3Txoco,9788
54
58
  xmipp3/protocols/protocol_helical_parameters.py,sha256=aExrXYis9jmRx4GOagy1TRdTaUeK1nkX3akHSS41aoQ,9841
55
59
  xmipp3/protocols/protocol_kerdensom.py,sha256=dwJB8Gs1lynymNjBRVvDbGJpz9p2dRsoTgkT-1B08Fs,12393
56
60
  xmipp3/protocols/protocol_local_ctf.py,sha256=Kv9vKC6KCt_fgiF5a-4ivKeetFQGMq05jH3vHMTLLFw,8110
61
+ xmipp3/protocols/protocol_mics_defocus_balancer.py,sha256=eYFS65J0ft_88Ggy7xCcvWmp5UJpEADKKbpfyc7lHxo,13174
57
62
  xmipp3/protocols/protocol_ml2d.py,sha256=fOkDGOADXgMxT_GeDEf2b7F8W2GdNP8ZFCTM7DEKUxk,17214
58
- xmipp3/protocols/protocol_movie_alignment_consensus.py,sha256=BcRB_LfPvJNkDK8BR4ejtwuRKEkqD5V5yTqUPyiihPA,25019
59
- xmipp3/protocols/protocol_movie_dose_analysis.py,sha256=EEhCwurO4EoNiAyV53ykneYVSPhAh4sls-0Ka4A7g_4,17040
60
- xmipp3/protocols/protocol_movie_gain.py,sha256=tc1GU3-VbV1fkxXzPY0nCGMMKO0lEdtt6HCWKR_azKs,24802
61
- xmipp3/protocols/protocol_movie_max_shift.py,sha256=zrzZAh-mBWNfVJ-2w12EmbaJ7IYBuQOsdqxRzJkebqE,17726
62
- xmipp3/protocols/protocol_movie_opticalflow.py,sha256=js8Tk6MR47T7wlCkQn2dUb9iQu79UWOnWfEwqNNsZrw,18059
63
+ xmipp3/protocols/protocol_movie_alignment_consensus.py,sha256=UJD_baOMbc-Nls2Oy8YO26pNtKNDoT4jS0pKh4DH90E,25020
64
+ xmipp3/protocols/protocol_movie_dose_analysis.py,sha256=71E8h0h4HkpZT9j_X3ZLH5S68VHgydIa82Al_ade8n0,20516
65
+ xmipp3/protocols/protocol_movie_gain.py,sha256=JVpYI2ZiPlI5rm1dXHDcXQSavxD6rac3OYgA9Bd4BWU,24967
66
+ xmipp3/protocols/protocol_movie_max_shift.py,sha256=9ORlwtpGycMVhqByje1yeqbd6LmYt41sxTMQv9dHZKI,20188
63
67
  xmipp3/protocols/protocol_movie_split_frames.py,sha256=yx4DryyQDyyqLwp0ckyHjy-_aDBMjdvIIBCZ80Xe4OI,7175
64
68
  xmipp3/protocols/protocol_multiple_fscs.py,sha256=Q-F-gZIIk8V8jtMB1DW1R2RbDvXloS0USg6Cy1_Wf5c,6491
65
69
  xmipp3/protocols/protocol_multireference_alignability.py,sha256=ILbYwU2rHnibzf5PGSsDGI3hJsDUnn0IzC49pOoG14M,27660
@@ -75,8 +79,8 @@ xmipp3/protocols/protocol_postProcessing_deepPostProcessing.py,sha256=RqcwXuj22B
75
79
  xmipp3/protocols/protocol_preprocess_micrographs.py,sha256=eKu-Hdtd8lsxuT1J7JW_N3AJSESkZxL2-HF-iU5E3SM,23961
76
80
  xmipp3/protocols/protocol_random_conical_tilt.py,sha256=R5PrC9JGPWylpBrZ70_VPpN5zySPXI6YM6Mdlbpib3Y,17030
77
81
  xmipp3/protocols/protocol_ransac.py,sha256=-Ih7qjWcjzKgyUEphVk7bpd9S1fMFaO2AfYalzd2fGk,28957
78
- xmipp3/protocols/protocol_reconstruct_fourier.py,sha256=mZ-kCM2V1hhEaXVuCq-_LbyhlUudZ3t1VeB0-fpT2Mc,12271
79
- xmipp3/protocols/protocol_reconstruct_highres.py,sha256=WGCuJvEhFEFtLg_jD8wDdpjz1KS4ckHYX7tNpfhhw8A,107816
82
+ xmipp3/protocols/protocol_reconstruct_fourier.py,sha256=3cY-qb8n5Cjs9DyLfUdZjQgXkIlNJAEOk1eu7q0l1nE,13475
83
+ xmipp3/protocols/protocol_reconstruct_highres.py,sha256=vcIvqWmfhTNE7X6HnPlPrCD2choZN88n1pHWOJhw8Z0,108240
80
84
  xmipp3/protocols/protocol_reconstruct_significant.py,sha256=VMHCDpc-XKe43jjyPuswFRdu9l3s-eXyUxIUjfvi4bc,26462
81
85
  xmipp3/protocols/protocol_reconstruct_swarm.py,sha256=z_g7HJ6Ix_Ov3zCzLnqkJuPb3vKq82UYCpB87Cles_E,30163
82
86
  xmipp3/protocols/protocol_resolution3d.py,sha256=L9e46RaZosxZlfFOi_GCuwNGqxY13LTxrqrwejWiPFE,10241
@@ -92,20 +96,20 @@ xmipp3/protocols/protocol_screen_deeplearning.py,sha256=nrhfzoTWPWULTrDDnUD1ELCC
92
96
  xmipp3/protocols/protocol_screen_particles.py,sha256=bxKG3AMK77opsr1FAR2MX4qTp2h7d3sXIqT2CCfJm34,21123
93
97
  xmipp3/protocols/protocol_shift_particles.py,sha256=S4U1W6E73YaneIIibAaD_-1-2tRbDgZgDJQYdpjklyw,8893
94
98
  xmipp3/protocols/protocol_shift_volume.py,sha256=iejnfsJkYEJhs9cADX5_r7Iniwnnc8X-nwF4RbU1ADU,5138
95
- xmipp3/protocols/protocol_simulate_ctf.py,sha256=nVzve11NPeHOidJtxZ3oPKhgoGeMbiK9BSSP81n6fHU,8047
99
+ xmipp3/protocols/protocol_simulate_ctf.py,sha256=r-9FgH5J1RT_Pcokm4LSoJgMYv0vra7HnrhSIDuiIG0,8044
96
100
  xmipp3/protocols/protocol_structure_map.py,sha256=Nf6H_imnkgJTs64-I8FFFtD1CKFmaZ8Sb6ZTD_j33m8,8331
97
101
  xmipp3/protocols/protocol_structure_map_zernike3d.py,sha256=EY7rV6vSfyxYXH3ed0FTzNsYu87Ph9klYGqlwuc0eyU,22110
98
- xmipp3/protocols/protocol_subtract_projection.py,sha256=v1svDU_qGWBu58oGrTVSIB8cJj3INE3Dl97E2DoaXuU,12850
99
- xmipp3/protocols/protocol_tilt_analysis.py,sha256=uw_kNUPw1LuG75mQmXkL9xHPAIc5xTXRRrbHVN0qJF0,28556
100
- xmipp3/protocols/protocol_trigger_data.py,sha256=8eJiHieg7wHX0Gd7ytyfLHnnyzYMpayVda1v6vFHWvs,15711
101
- xmipp3/protocols/protocol_validate_fscq.py,sha256=fY54lDWAWcdw2zPlnf5DNV98y0v-qgjkJiKWHqIS3nY,26475
102
+ xmipp3/protocols/protocol_subtract_projection.py,sha256=VnXv2WVH3iqM5rzZIBnM_5hDGVADx0zgFvZakwyMjUI,15023
103
+ xmipp3/protocols/protocol_tilt_analysis.py,sha256=JYeeZoQxPyGpEjjakJQwkTah-0syqIPM9PfQ0gMMQfc,24040
104
+ xmipp3/protocols/protocol_trigger_data.py,sha256=_0eTUdR3X-Wy0D9gs2HFE5YlieMhCnS3_GMLEQB-E8U,16540
105
+ xmipp3/protocols/protocol_validate_fscq.py,sha256=M9UO6OGomuOZAfnalklC0IK_oDhBDR79_nsLrp55bbg,26472
102
106
  xmipp3/protocols/protocol_validate_nontilt.py,sha256=0HFI6bnvSzduzBNddaL-WMyM7M4n-K68g3hd1ZC4mc8,16316
103
107
  xmipp3/protocols/protocol_validate_overfitting.py,sha256=QYKu8Hi6QwbbEsY5V6Riu7K7PWUpj8oS__ZjobjFe80,25116
104
- xmipp3/protocols/protocol_volume_adjust_sub.py,sha256=HESmNsxutaxtiO0NO7Wgcj7yncGm_o97bgIB6fkblX8,17626
108
+ xmipp3/protocols/protocol_volume_adjust_sub.py,sha256=vkBPw1dU1P2gwi2dPgLtxSK13ugA97WP9PDCag-fVCA,17477
105
109
  xmipp3/protocols/protocol_volume_consensus.py,sha256=miaQo_ldhwAcFefBjIk32iKFpK0SBvaPaVPviD1eoL8,5626
106
110
  xmipp3/protocols/protocol_volume_deform_zernike3d.py,sha256=fpZlYE6TRkDkgD4Ozo4RWNCX-ba89bGvqBSn-6Ki8qA,10165
107
111
  xmipp3/protocols/protocol_volume_local_adjust.py,sha256=XupsyYS92ClxM34d1PYK8W2X9XNpAoJRREkMWth1CU4,6051
108
- xmipp3/protocols/protocol_volume_local_sharpening.py,sha256=iFjA4DKEIVKVE1ekNfbCrMWeTRBQwIjXJIQu7DwbP24,12479
112
+ xmipp3/protocols/protocol_volume_local_sharpening.py,sha256=aj2mMfdMz31ACMbKDRhksCzNouro-CZJtQn9JnoHrdM,13402
109
113
  xmipp3/protocols/protocol_volume_strain.py,sha256=OQU0mLlHBK0add_gP9hWwDc19FxGAYY4XmjRkKfcB3M,6777
110
114
  xmipp3/protocols/protocol_write_testC.py,sha256=LfUhtQeT_lsZjw7yHDa0B-m33V-UmfJYMn_fFyruPnc,3288
111
115
  xmipp3/protocols/protocol_write_testP.py,sha256=2CaljDnQFTCIq7Jg6OdQjJmWHOOGpLPgdvyaN2E6cbs,4485
@@ -143,29 +147,29 @@ xmipp3/tests/test_protocol_simulate_ctf.py,sha256=G1PImqwh0ZEOfpl6RK6xeUqJmWIE2J
143
147
  xmipp3/tests/test_protocol_validate_fscq.py,sha256=RL8UTe8tgn_IU8mazmuiQzfFQjmoJkZHxi-96rtDInI,2699
144
148
  xmipp3/tests/test_protocol_validate_overfitting.py,sha256=PSFRoARteTABLZxJ4ZuWJUnh34QT2JQ6gekqOTgpG6w,3598
145
149
  xmipp3/tests/test_protocols_add_noise.py,sha256=Uc6Kc5KaxXUeX6GedbHV3h7svSQoPrXfbHsqc6J6BQk,5209
146
- xmipp3/tests/test_protocols_angular_resolution_alignment.py,sha256=pVhSBXI4vs025a0LYI8sogFDWPz9uOlC5wuLpqcViBE,3874
147
150
  xmipp3/tests/test_protocols_continuousflex.py,sha256=y_WeCm-XiZ5rJS1lx4i0TsGoWNf3TeHwL3RC7vVr_Q4,6940
148
151
  xmipp3/tests/test_protocols_deepVolPostprocessing.py,sha256=ZUSkLaR2sRlvZoaWPYwIUmDBC0X5DRy7peRd8EieseY,7143
152
+ xmipp3/tests/test_protocols_deepcenter_predict.py,sha256=OUtfPqeGQcgnP5Epx89t4YuzW0d3XC7iDlsBCaQy7Bk,2952
149
153
  xmipp3/tests/test_protocols_deepres.py,sha256=rXc-kAWZ8gGGS7L8e27P-ZPsFo5BPyqZKFl25V7dWII,3635
150
154
  xmipp3/tests/test_protocols_fso.py,sha256=CrVAVoBD9UbLVKT21TB0Q-tVnZ7qEsm4zcELzDnN3CU,4274
151
155
  xmipp3/tests/test_protocols_highres.py,sha256=cDvRxn6JUI1WQhXjT-83u32hOETBDxt-F5F_ZFx0wJI,4411
152
156
  xmipp3/tests/test_protocols_local_defocus.py,sha256=XGXZTas0pqhHkKfZEky7a8sqLC14rB8KqoOPD27pzZE,9067
153
157
  xmipp3/tests/test_protocols_localdeblur.py,sha256=iKf-CFwts-0yePzuztB8czbQLSYvpxHv2gT89I0RHXc,7300
154
- xmipp3/tests/test_protocols_mixed_movies.py,sha256=kAAqNx33TMoOH0v6TaTyfUvdSAQ-vEtUalf6ecgepsM,6151
155
158
  xmipp3/tests/test_protocols_monores.py,sha256=FlLhcGUIGrErRh7KKCHo48dB-zrE0i9btLQxTOb-g3U,5023
156
159
  xmipp3/tests/test_protocols_realignment_classes.py,sha256=SrMOjTRr46iN69Prhpvyh9kU7VjnxhSCn3FAdBFni9U,6399
157
- xmipp3/tests/test_protocols_xmipp_2d.py,sha256=wJJqrX3ALeeZ8xFNcCO7ThE2dJG4p3yM6ua-7m76UJg,82720
158
- xmipp3/tests/test_protocols_xmipp_3d.py,sha256=xj1AMmrKmSjyqj6Q8HOD3jWBypYQ48bXYtxca8f1QGw,171944
159
- xmipp3/tests/test_protocols_xmipp_mics.py,sha256=yXjq85Y4xrxKGT9LO5N4fXb4gbGYGDPBRrJKiDlLIRI,59915
160
+ xmipp3/tests/test_protocols_xmipp_2d.py,sha256=MVN0CQQil2cIxX4ju5rsk0Qv8grsZ-_Sln9ugPKvWTo,83556
161
+ xmipp3/tests/test_protocols_xmipp_3d.py,sha256=88LUfNyl1OxYdPF9tocn3K_vm3NQ9_9R1grbQhiSMq4,113442
162
+ xmipp3/tests/test_protocols_xmipp_mics.py,sha256=Bf-heIcImLR74DcYvS5_6xrwVu84OwQ_TYP3feenDAQ,61478
160
163
  xmipp3/tests/test_protocols_xmipp_movie_resize.py,sha256=XR1gYYZeDhNOkDkZhimPDbqcYwss5z-zbhJ73ZM0a5g,6494
161
- xmipp3/tests/test_protocols_xmipp_movies.py,sha256=iINRMOxegyXVjLrAx-KtkWtxArxRcpuK-9E_UYSBqcY,42089
164
+ xmipp3/tests/test_protocols_xmipp_movies.py,sha256=Nl8zfskXUTgfag7I0zrJ3iP44YMv9jiUX0cp5lTBuy4,34504
162
165
  xmipp3/tests/test_protocols_zernike3d.py,sha256=bTXCK4wBKSJZK1KCZXec3j8y1mVLoBxE5bF3AGbOsNs,18132
163
- xmipp3/viewers/__init__.py,sha256=q1G63LhmRxGiPwCa35-gatZXKSbftApQFvBXaL1vLjc,3542
166
+ xmipp3/viewers/__init__.py,sha256=UHKwvYfhP4_FeyOPihwvGEbKcrorMOHS8AXeW3Yl6KQ,3669
164
167
  xmipp3/viewers/plotter.py,sha256=YHDqAs7_rbv8cXMmwmg42YeeBnesdX44awrppX3VJw0,3875
165
168
  xmipp3/viewers/viewer.py,sha256=X68yRXVraMmzmoHaccntfuZBVXvnx49hfCsXyBLmlH4,19233
166
169
  xmipp3/viewers/viewer_analyze_local_ctf.py,sha256=-Oa7flu05KxP8M6AlZRaWKCRqZljRz23Z6Ncz1qDHhw,4866
167
- xmipp3/viewers/viewer_angular_resolution_alignment.py,sha256=9DCZ94TAedHltvlKf99BEFtgFuoMisKipMwubPn82lU,5155
170
+ xmipp3/viewers/viewer_apply_tilt_to_ctf.py,sha256=GdKDSI1FjcgvKxOrO6BOWPaLrYpMYh2AtXxB3BEK7So,3263
168
171
  xmipp3/viewers/viewer_cl2d.py,sha256=7uBU6zYOkhYqjMNWFUPFbMOPsqWja9DaTssp_ju6AXw,8764
172
+ xmipp3/viewers/viewer_cl2d_clustering.py,sha256=PKJbAyi_meEPgSEtOFE9vYusz0WLGaphDGeqee9BbpE,5768
169
173
  xmipp3/viewers/viewer_consensus_classes.py,sha256=En4EW8tYDS0NLmGoM9IBz_KM9PoBtDo-AqfVxmUDFeE,5434
170
174
  xmipp3/viewers/viewer_ctf_consensus.py,sha256=gosd9D2iuTUHgdlQlHIGS_HBybThR1S8SBfgM096e_8,7669
171
175
  xmipp3/viewers/viewer_deepEMHancer.py,sha256=ok5e2NfPeK8Joa0Y7Wp0GQG00Pk7AAG19xOE42A1l6c,5741
@@ -176,7 +180,7 @@ xmipp3/viewers/viewer_eliminate_empty_images.py,sha256=LMDYe4iql1kFOESBbwyClzNez
176
180
  xmipp3/viewers/viewer_extract_asymmetric_unit.py,sha256=fGYqUfrsPLzFDj4UxuVQe8b2AN_I64cruaWBjhnLkU8,7092
177
181
  xmipp3/viewers/viewer_local_sharpening.py,sha256=_j_4RZISQjWzrBFmsI88DrNqxbT3Ng1AJRmo0MfdCCk,4408
178
182
  xmipp3/viewers/viewer_ml2d.py,sha256=XL1NL8mg-W8TC0fHemD-eR9mHxgUMBnF2d9gwJagC7s,8451
179
- xmipp3/viewers/viewer_movie_alignment.py,sha256=mOrF2xxy3eA2q_xVnH46We4ECrhC9y5xR62Sk6rwG_c,7122
183
+ xmipp3/viewers/viewer_movie_alignment.py,sha256=h2mDRK_hBNN97E5nqvVkTYtgCl8b7MNz181uZMb97qs,6763
180
184
  xmipp3/viewers/viewer_normalize_strain.py,sha256=L54CZvxaU9ezu223jgvOSTBn4yYWs2x9q87_3vvHi9k,2804
181
185
  xmipp3/viewers/viewer_pdb_deform_zernike3d.py,sha256=g5-ntcOt7841rFFGPRb6NK-wQ2FfbBz2P1E980uENZo,4653
182
186
  xmipp3/viewers/viewer_projmatch.py,sha256=j9_1S8hrTUjRL-YeIYdLvxvsTTBjrJR9TyRQN3gG3JY,37619
@@ -198,9 +202,9 @@ xmipp3/viewers/viewer_volume_consensus.py,sha256=S7YViiZ9w5xAGhfyj1RnDypVWsQ7PKh
198
202
  xmipp3/viewers/viewer_volume_deform_zernike3d.py,sha256=BOeI7go5w2RRwGjV9kPm2U76tVJRaHww1Pl0zUCXQRw,8903
199
203
  xmipp3/viewers/viewer_volume_strain.py,sha256=4LQUrceVMB6OaAfTpFXdn3vGv-sXQzUIPDEPELYfasY,2378
200
204
  xmipp3/viewers/viewer_volume_subtraction.py,sha256=3RbwJQIaCcdzldrFODLgWlFbCips1450RDVzngLRRoU,5121
201
- scipion_em_xmipp-24.6.0.0.dist-info/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
202
- scipion_em_xmipp-24.6.0.0.dist-info/METADATA,sha256=e5mEXzj7v4bn5xf7M_k_edNq3EJtZMamwdbq220Yt4E,1621
203
- scipion_em_xmipp-24.6.0.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
204
- scipion_em_xmipp-24.6.0.0.dist-info/entry_points.txt,sha256=uAfbaIdLcZ7JWL0tWzQVwsVEyyOZb1WcBX4YZMqRrIk,37
205
- scipion_em_xmipp-24.6.0.0.dist-info/top_level.txt,sha256=qnLFoZzwKticb33xgeSAJv3P7nD2nHMTFKYzxAorOOQ,7
206
- scipion_em_xmipp-24.6.0.0.dist-info/RECORD,,
205
+ scipion_em_xmipp-24.12.2.dist-info/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
206
+ scipion_em_xmipp-24.12.2.dist-info/METADATA,sha256=Wc7YocK5Bm0u0NNYEU7dMWzX72VqY8h54Nl8BZQMYfQ,1636
207
+ scipion_em_xmipp-24.12.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
208
+ scipion_em_xmipp-24.12.2.dist-info/entry_points.txt,sha256=uAfbaIdLcZ7JWL0tWzQVwsVEyyOZb1WcBX4YZMqRrIk,37
209
+ scipion_em_xmipp-24.12.2.dist-info/top_level.txt,sha256=qnLFoZzwKticb33xgeSAJv3P7nD2nHMTFKYzxAorOOQ,7
210
+ scipion_em_xmipp-24.12.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: bdist_wheel (0.45.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
xmipp3/__init__.py CHANGED
@@ -27,36 +27,59 @@
27
27
  # **************************************************************************
28
28
 
29
29
  import json
30
- import subprocess
31
30
  from datetime import datetime
32
-
33
- from pyworkflow import Config
34
31
  import pwem
32
+ from pyworkflow import Config
35
33
  import pyworkflow.utils as pwutils
36
-
34
+ from scipion.install.funcs import CommandDef
35
+ from scipion import __version__ as scipionAppVersion
36
+ from packaging.version import Version
37
37
  from .base import *
38
- from .constants import XMIPP_HOME, XMIPP_URL, XMIPP_DLTK_NAME
38
+ from .version import *
39
+ from .constants import XMIPP_HOME, XMIPP_URL, XMIPP_DLTK_NAME, XMIPP_CUDA_BIN, XMIPP_CUDA_LIB, XMIPP_GIT_URL
39
40
 
40
- type_of_version = 'release' #'devel'
41
- _logo = "xmipp_logo" + ("" if type_of_version == 'release' else '_devel') + '.png'
42
41
 
43
42
  _references = ['delaRosaTrevin2013', 'Sorzano2013', 'Strelak2021']
44
- _currentBinVersion = '3.24.06.0'
45
- __version__ = _currentBinVersion[2:] + ".0" # Set this to ".0" on each xmipp binary release, otherwise increase it --> ".1", ".2", ...
46
-
43
+ _currentDepVersion = '1.0'
47
44
  # Requirement version variables
48
45
  NVIDIA_DRIVERS_MINIMUM_VERSION = 450
49
46
 
47
+ type_of_version = version.type_of_version
48
+ _logo = version._logo
49
+ _binTagVersion = version._binTagVersion
50
+ _pluginTagVersion= version._pluginTagVersion
51
+ _currentDepVersion = version._currentDepVersion
52
+ __version__ = version.__version__
53
+
54
+
50
55
  class Plugin(pwem.Plugin):
51
56
  _homeVar = XMIPP_HOME
52
57
  _pathVars = [XMIPP_HOME]
53
58
  _supportedVersions = []
54
59
  _url = XMIPP_URL
55
60
  _condaRootPath = None
56
-
61
+ # Refressing the plugin
62
+ # Inspects the call stack to find 'installPipModule' and sets 'self._plugin' to None.
63
+ # Uses CPython's internal API 'PyFrame_LocalsToFast' to sync changes.
64
+ # Risky and CPython-specific; use only if redesign is not possible.
65
+ try:
66
+ import inspect
67
+ import ctypes
68
+ for frameInfo in inspect.stack():
69
+ if frameInfo.function == "installPipModule":
70
+ frame = frameInfo[0]
71
+ frame.f_locals['self']._plugin = None
72
+ ctypes.pythonapi.PyFrame_LocalsToFast(
73
+ ctypes.py_object(frame),
74
+ ctypes.c_int(1))
75
+ except Exception as e:
76
+ print(e)
77
+
57
78
  @classmethod
58
79
  def _defineVariables(cls):
59
- cls._addVar(XMIPP_HOME, pwem.Config.XMIPP_HOME)
80
+ cls._defineEmVar(XMIPP_HOME, pwem.Config.XMIPP_HOME)
81
+ cls._defineVar(XMIPP_CUDA_BIN, pwem.Config.CUDA_BIN)
82
+ cls._defineVar(XMIPP_CUDA_LIB, pwem.Config.CUDA_LIB)
60
83
 
61
84
  @classmethod
62
85
  def getEnviron(cls, xmippFirst=True):
@@ -65,8 +88,8 @@ class Plugin(pwem.Plugin):
65
88
  pos = pwutils.Environ.BEGIN if xmippFirst else pwutils.Environ.END
66
89
 
67
90
  environ.update({
68
- 'PATH': pwem.Config.CUDA_BIN,
69
- 'LD_LIBRARY_PATH': pwem.Config.CUDA_LIB
91
+ 'PATH': cls.getVar(XMIPP_CUDA_BIN),
92
+ 'LD_LIBRARY_PATH': cls.getVar(XMIPP_CUDA_LIB)
70
93
  }, position=pwutils.Environ.END)
71
94
 
72
95
  if os.path.isfile(getXmippPath('xmippEnv.json')):
@@ -117,94 +140,88 @@ class Plugin(pwem.Plugin):
117
140
  Scipion-defined software can be used as dependencies
118
141
  by using its name as string.
119
142
  """
143
+
144
+ # Determine if we are on a development
145
+ bundleDir = cls.__getBundleDirectory()
146
+ develMode = bundleDir is not None
147
+
148
+ COMPILE_TARGETS = [
149
+ 'dist/bin/xmipp_image_header',
150
+ 'dist/xmipp.bashrc'
151
+ ]
152
+
153
+ # When changing dependencies, increment _currentDepVersion
154
+ CONDA_DEPENDENCIES = [
155
+ 'cmake>=3.17',
156
+ 'hdf5>=1.18',
157
+ 'sqlite>=3',
158
+ 'fftw>=3',
159
+ 'mpich-mpicxx',
160
+ 'c-compiler',
161
+ 'cxx-compiler',
162
+ 'make',
163
+ 'openjdk',
164
+ 'libtiff',
165
+ 'libjpeg-turbo'
166
+ ]
167
+
168
+ if os.environ['CONDA_PREFIX'] is not None: # TODO replace with pyworkflow method when available.
169
+ commands = CommandDef('conda install -c conda-forge ' + ' '.join(CONDA_DEPENDENCIES))
170
+ env.addPackage(
171
+ 'xmippDep', version=_currentDepVersion,
172
+ tar='void.tgz',
173
+ commands=commands.getCommands(),
174
+ neededProgs=['conda'],
175
+ default=False
176
+ )
177
+
178
+ if develMode:
179
+ env.addPackage(
180
+ 'xmippDev',
181
+ tar='void.tgz',
182
+ commands=[(f'cd {bundleDir} && ./xmipp', COMPILE_TARGETS)],
183
+ neededProgs=['git', 'gcc', 'g++', 'cmake', 'make'],
184
+ updateCuda=True,
185
+ default=False
186
+ )
187
+
188
+ xmippSrc = f'xmippSrc-{version._binTagVersion}'
189
+ installCommands = [
190
+ (f'cd .. && rm -rf {xmippSrc} && '
191
+ f'git clone {XMIPP_GIT_URL} {xmippSrc} && '
192
+ f'cd {xmippSrc} && '
193
+ f'git checkout {version._binTagVersion} && '
194
+ f'./xmipp --production True ', COMPILE_TARGETS)
195
+ ]
196
+ env.addPackage(
197
+ 'xmippSrc', version=version._binTagVersion,
198
+ tar='void.tgz',
199
+ commands=installCommands,
200
+ neededProgs=['git', 'gcc', 'g++', 'cmake', 'make'],
201
+ updateCuda=True,
202
+ default=not develMode
203
+ )
204
+
205
+ ## EXTRA PACKAGES ##
206
+ installDeepLearningToolkit(cls, env)
120
207
 
121
- ## XMIPP SOFTWARE ##
122
- xmippDeps = [] # Deps should be at requirements.txt (old: scons, joblib, scikit_learn)
123
-
124
- # Installation vars for commands formating
125
- verToken = getXmippPath('v%s' % _currentBinVersion)
126
- confToken = getXmippPath("xmipp.conf")
127
- installVars = {'installedToken': "installation_finished",
128
- 'bindingsToken': "bindings_linked",
129
- 'verToken': verToken,
130
- 'nProcessors': env.getProcessors(),
131
- 'xmippHome': getXmippPath(),
132
- 'bindingsSrc': getXmippPath('bindings', 'python'),
133
- 'bindingsDst': Config.getBindingsFolder(),
134
- 'xmippLib': getXmippPath('lib', 'libXmipp.so'),
135
- 'coreLib': getXmippPath('lib', 'libXmippCore.so'),
136
- 'libsDst': Config.getLibFolder(),
137
- 'confToken': confToken,
138
- 'strPlaceHolder': '%s', # to be replaced in the future
139
- 'currVersion': _currentBinVersion
140
- }
141
-
142
- ## Installation commands (removing bindingsToken)
143
- installCmd = ("cd {cwd} && {configCmd} && {compileCmd} N={nProcessors:d} && "
144
- "ln -srfn build {xmippHome} && cd - && "
145
- "touch {installedToken} && rm {bindingsToken} 2> /dev/null")
146
- installTgt = [getXmippPath('bin', 'xmipp_reconstruct_significant'),
147
- getXmippPath("lib/libXmippJNI.so"),
148
- installVars['installedToken']]
149
-
150
- ## Linking bindings (removing installationToken)
151
- bindingsAndLibsCmd = ("find {bindingsSrc} -maxdepth 1 -mindepth 1 "
152
- r"! -name __pycache__ -exec ln -srfn {{}} {bindingsDst} \; && "
153
- "ln -srfn {coreLib} {libsDst} && "
154
- "touch {bindingsToken} && "
155
- "rm {installedToken} 2> /dev/null")
156
- bindingsAndLibsTgt = [os.path.join(Config.getBindingsFolder(), 'xmipp_base.py'),
157
- os.path.join(Config.getBindingsFolder(), 'xmippLib.so'),
158
- os.path.join(Config.getLibFolder(), 'libXmipp.so'),
159
- installVars['bindingsToken']]
160
-
161
- sourceTgt = [getXmippPath('xmipp.bashrc')] # Target for xmippSrc and xmippDev
162
- ## Allowing xmippDev if devel mode detected
208
+ @classmethod
209
+ def __getBundleDirectory(cls):
163
210
  # plugin = scipion-em-xmipp <-- xmipp3 <-- __init__.py
164
211
  pluginDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
165
212
  # bundle = xmipp-bundle <- src <- scipion-em-xmipp
166
213
  bundleDir = os.path.dirname(os.path.dirname(pluginDir))
167
214
 
168
- isPypiDev = os.path.isfile(os.path.join(pluginDir, 'setup.py'))
169
- isXmippBu = (os.path.isdir(os.path.join(bundleDir, 'src')) and
170
- os.path.isfile(os.path.join(bundleDir, 'xmipp')))
171
- develMode = isPypiDev and isXmippBu
172
- if develMode:
173
- env.addPackage('xmippDev', tar='void.tgz',
174
- commands=[(installCmd.format(**installVars,
175
- cwd=bundleDir,
176
- configCmd='pwd',
177
- compileCmd='./xmipp all'),
178
- installTgt+sourceTgt),
179
- (bindingsAndLibsCmd.format(**installVars),
180
- bindingsAndLibsTgt)],
181
- deps=xmippDeps, default=False)
182
-
183
- avoidConfig = os.environ.get('XMIPP_NOCONFIG', 'False') == 'True'
184
- alreadyCompiled = os.path.isfile(getXmippPath('v' + _currentBinVersion)) # compilation token (see the xmipp script)
185
- configSrc = ('./xmipp check_config' if avoidConfig
186
- else './xmipp config noAsk && ./xmipp check_config')
187
- env.addPackage('xmippSrc', version=_currentBinVersion,
188
- # adding 'v' before version to fix a package target (post-link)
189
- tar='xmippSrc-v' + _currentBinVersion + '.tgz',
190
- commands=[(installCmd.format(**installVars, cwd='.',
191
- configCmd=configSrc,
192
- compileCmd='./xmipp compileAndInstall'),
193
- installTgt + sourceTgt),
194
- (bindingsAndLibsCmd.format(**installVars),
195
- bindingsAndLibsTgt)],
196
- deps=xmippDeps, default=not (develMode or alreadyCompiled))
197
-
198
- ## EXTRA PACKAGES ##
199
- installDeepLearningToolkit(cls, env)
200
-
201
-
215
+ isBundle = (os.path.isdir(os.path.join(bundleDir, 'src')) and
216
+ os.path.isfile(os.path.join(bundleDir, 'xmipp')))
217
+
218
+ return bundleDir if isBundle else None
219
+
202
220
  def installDeepLearningToolkit(plugin, env):
203
221
 
204
222
  preMsgs = []
205
223
  cudaMsgs = []
206
224
  nvidiaDriverVer = None
207
- useGpu = False
208
225
  if os.environ.get('CUDA', 'True') == 'True':
209
226
  try:
210
227
  nvidiaDriverVer = subprocess.Popen(["nvidia-smi",
@@ -221,7 +238,7 @@ def installDeepLearningToolkit(plugin, env):
221
238
  f"To enable CUDA (drivers>{NVIDIA_DRIVERS_MINIMUM_VERSION} needed), "
222
239
  "set CUDA=True in 'scipion.conf' file")
223
240
  nvidiaDriverVer = None
224
- except (ValueError, TypeError):
241
+ except (ValueError, TypeError, FileNotFoundError):
225
242
  nvidiaDriverVer = None
226
243
  preMsgs.append("Not nvidia driver found. Type: "
227
244
  " nvidia-smi --query-gpu=driver_version --format=csv,noheader")
@@ -230,6 +247,7 @@ def installDeepLearningToolkit(plugin, env):
230
247
  msg = ("Tensorflow installed without GPU. Just CPU computations "
231
248
  "enabled (slow computations).")
232
249
  cudaMsgs.append(msg)
250
+ useGpu = False
233
251
 
234
252
  if nvidiaDriverVer is not None:
235
253
  preMsgs.append("CUDA support found. Driver version: %s" % nvidiaDriverVer)
@@ -0,0 +1,117 @@
1
+ # ***************************************************************************
2
+ # * Authors: Carlos Oscar Sorzano (coss@cnb.csic.es)
3
+ # *
4
+ # *
5
+ # * This program is free software; you can redistribute it and/or modify
6
+ # * it under the terms of the GNU General Public License as published by
7
+ # * the Free Software Foundation; either version 2 of the License, or
8
+ # * (at your option) any later version.
9
+ # *
10
+ # * This program is distributed in the hope that it will be useful,
11
+ # * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # * GNU General Public License for more details.
14
+ # *
15
+ # * You should have received a copy of the GNU General Public License
16
+ # * along with this program; if not, write to the Free Software
17
+ # * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18
+ # * 02111-1307 USA
19
+ # *
20
+ # * All comments concerning this program package may be sent to the
21
+ # * e-mail address 'scipion@cnb.csic.es'
22
+ # ***************************************************************************/
23
+ '''
24
+ Description: This script checks for any protocols missing in the file
25
+ protocols.conf and lists them for further action.
26
+
27
+ Usage: python check_missing_protocols.py
28
+ '''
29
+
30
+ import ast
31
+ import glob
32
+ import os
33
+
34
+ def get_classes_from_file(file_path):
35
+ with open(file_path, 'r', encoding='utf-8') as file:
36
+ file_content = file.read()
37
+ tree = ast.parse(file_content)
38
+ class_names = [node.name for node in ast.walk(tree) if isinstance(node, ast.ClassDef)]
39
+ return class_names
40
+
41
+ with open("protocols.conf", 'r', encoding='utf-8') as file:
42
+ protocolsConf = file.read()
43
+
44
+ blackList = ['ScatterImageMarker','XMIPPCOLUMNS', 'XmippProtVolAdjBase', 'AlignVolPartOutputs','ProtPickingConsensusOutput',
45
+ 'XmippProtEliminateEmptyBase', 'XmippProtDeepConsSubSet', 'XmippProtWriteTestP', 'NoOutputGenerated','XmippProtSubtractProjectionBase',
46
+ 'XmippProtWriteTestC','KendersomBaseClassify','XmippProtAlignVolumeForWeb', 'XMIPPCOLUMNS', 'NoOutputGenerated', 'ScatterImageMarker',
47
+ 'AlignVolPartOutputs']
48
+
49
+
50
+ #######Missing classes
51
+ missingCounter = 0
52
+ classCounter = 0
53
+ for py_file in glob.glob("protocols/*.py"):
54
+ for class_name in get_classes_from_file(py_file):
55
+ classCounter+=1
56
+ if not class_name in blackList:
57
+ if not class_name in protocolsConf:
58
+ print(f"Missing: {class_name} from {py_file}")
59
+ missingCounter +=1
60
+ print(f"Missing classes: {missingCounter}/{classCounter}")
61
+
62
+
63
+
64
+ #######Missing tests
65
+
66
+ def extract_protocols_from_file(file_path):
67
+ """Extrae las llamadas a self.newProtocol en un archivo."""
68
+ protocols = []
69
+ with open(file_path, 'r', encoding='utf-8') as f:
70
+ source_code = f.read()
71
+ tree = ast.parse(source_code)
72
+ for node in ast.walk(tree):
73
+ if isinstance(node, ast.Call):
74
+ if (isinstance(node.func, ast.Attribute) and
75
+ node.func.attr == "newProtocol" and
76
+ isinstance(node.func.value, ast.Name) and
77
+ node.func.value.id == "self"):
78
+ if node.args:
79
+ protocol_node = node.args[0]
80
+ if isinstance(protocol_node, ast.Name):
81
+ protocol = protocol_node.id
82
+ elif isinstance(protocol_node, ast.Attribute):
83
+ protocol = protocol_node.attr
84
+ elif isinstance(protocol_node, ast.Constant):
85
+ protocol = protocol_node.value
86
+ if protocol not in protocols:
87
+ protocols.append(protocol)
88
+ return protocols
89
+
90
+
91
+ def extract_protocols_from_folder(folder_path):
92
+ """Extrae todos los protocolos de los archivos .py en una carpeta."""
93
+ protocolsFull= []
94
+ for root, _, files in os.walk(folder_path):
95
+ for file in files:
96
+ if file.endswith(".py"):
97
+ file_path = os.path.join(root, file)
98
+ protocols = extract_protocols_from_file(file_path)
99
+ for protocol in protocols:
100
+ if protocol not in protocolsFull:
101
+ protocolsFull.append(protocol)
102
+ return protocolsFull
103
+
104
+ folder_path = "tests/"
105
+ protocols = extract_protocols_from_folder(folder_path)
106
+ partProt = protocols.index('xpsp')
107
+ protocols[partProt] = 'XmippProtScreenParticles'
108
+
109
+ protocolsWithoutTest = []
110
+ for py_file in glob.glob("protocols/*.py"):
111
+ for class_name in get_classes_from_file(py_file):
112
+ if not class_name in blackList:
113
+ if class_name not in protocols:
114
+ protocolsWithoutTest.append(class_name)
115
+
116
+ print(f"\nProtocolos without test ({len(protocolsWithoutTest)}/{len(protocols)})")
117
+ print('\n'.join(protocolsWithoutTest))
xmipp3/constants.py CHANGED
@@ -28,10 +28,13 @@ This modules contains constants related to Xmipp3 protocols
28
28
  """
29
29
 
30
30
  # ------------------ Constants values --------------------------------------
31
+ XMIPP_GIT_URL = 'https://github.com/I2PC/xmipp.git'
31
32
  XMIPP_URL = 'https://github.com/i2pc/scipion-em-xmipp'
32
33
  XMIPP_HOME = 'XMIPP_HOME'
33
34
  NMA_HOME = 'NMA_HOME'
34
35
  XMIPP_DLTK_NAME = 'deepLearningToolkit' # consider to change it to xmipp_DLTK to make short it
36
+ XMIPP_CUDA_BIN = 'XMIPP_CUDA_BIN'
37
+ XMIPP_CUDA_LIB = 'XMIPP_CUDA_LIB'
35
38
 
36
39
  MASK_FILL_VALUE = 0
37
40
  MASK_FILL_MIN = 1