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.
- {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/METADATA +8 -7
- {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/RECORD +51 -47
- {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/WHEEL +1 -1
- xmipp3/__init__.py +110 -92
- xmipp3/checkProtocolsConf.py +117 -0
- xmipp3/constants.py +3 -0
- xmipp3/convert/convert.py +31 -10
- xmipp3/protocols/__init__.py +4 -2
- xmipp3/protocols/protocol_apply_tilt_to_ctf.py +114 -0
- xmipp3/protocols/protocol_cl2d.py +1 -1
- xmipp3/protocols/protocol_cl2d_clustering.py +303 -0
- xmipp3/protocols/protocol_classify_pca.py +3 -1
- xmipp3/protocols/protocol_classify_pca_streaming.py +1 -0
- xmipp3/protocols/protocol_compare_reprojections.py +2 -2
- xmipp3/protocols/protocol_convert_pdb.py +9 -4
- xmipp3/protocols/protocol_create_gallery.py +84 -12
- xmipp3/protocols/protocol_ctf_consensus.py +186 -273
- xmipp3/protocols/protocol_ctf_defocus_group.py +4 -4
- xmipp3/protocols/protocol_ctf_micrographs.py +12 -1
- xmipp3/protocols/protocol_deep_center.py +2 -2
- xmipp3/protocols/protocol_deep_center_predict.py +140 -0
- xmipp3/protocols/protocol_extract_particles.py +1 -1
- xmipp3/protocols/protocol_flexalign.py +46 -47
- xmipp3/protocols/protocol_mics_defocus_balancer.py +341 -0
- xmipp3/protocols/protocol_movie_alignment_consensus.py +1 -1
- xmipp3/protocols/protocol_movie_dose_analysis.py +159 -77
- xmipp3/protocols/protocol_movie_gain.py +5 -1
- xmipp3/protocols/protocol_movie_max_shift.py +246 -178
- xmipp3/protocols/protocol_reconstruct_fourier.py +29 -14
- xmipp3/protocols/protocol_reconstruct_highres.py +15 -2
- xmipp3/protocols/protocol_simulate_ctf.py +1 -1
- xmipp3/protocols/protocol_subtract_projection.py +89 -28
- xmipp3/protocols/protocol_tilt_analysis.py +95 -191
- xmipp3/protocols/protocol_trigger_data.py +22 -12
- xmipp3/protocols/protocol_validate_fscq.py +1 -1
- xmipp3/protocols/protocol_volume_adjust_sub.py +0 -4
- xmipp3/protocols/protocol_volume_local_sharpening.py +34 -24
- xmipp3/protocols.conf +141 -115
- xmipp3/tests/test_protocols_deepcenter_predict.py +66 -0
- xmipp3/tests/test_protocols_xmipp_2d.py +27 -7
- xmipp3/tests/test_protocols_xmipp_3d.py +16 -755
- xmipp3/tests/test_protocols_xmipp_mics.py +43 -4
- xmipp3/tests/test_protocols_xmipp_movies.py +0 -169
- xmipp3/version.py +38 -0
- xmipp3/viewers/__init__.py +3 -1
- xmipp3/viewers/viewer_apply_tilt_to_ctf.py +81 -0
- xmipp3/viewers/viewer_cl2d_clustering.py +131 -0
- xmipp3/viewers/viewer_movie_alignment.py +3 -9
- xmipp3/protocols/protocol_angular_resolution_alignment.py +0 -204
- xmipp3/protocols/protocol_movie_opticalflow.py +0 -416
- xmipp3/tests/test_protocols_angular_resolution_alignment.py +0 -88
- xmipp3/tests/test_protocols_mixed_movies.py +0 -149
- xmipp3/viewers/viewer_angular_resolution_alignment.py +0 -148
- {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/LICENSE +0 -0
- {scipion_em_xmipp-24.6.0.0.dist-info → scipion_em_xmipp-24.12.2.dist-info}/entry_points.txt +0 -0
- {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.
|
|
4
|
-
Summary: Plugin to use Xmipp programs within the Scipion framework (see https://
|
|
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:
|
|
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
|
|
12
|
-
Requires-Dist: scikit-learn
|
|
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:
|
|
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
|
[](https://github.com/I2PC/scipion-em-xmipp/actions/workflows/build.yml)
|
|
@@ -1,65 +1,69 @@
|
|
|
1
|
-
xmipp3/__init__.py,sha256=
|
|
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/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
30
|
-
xmipp3/protocols/protocol_classify_pca_streaming.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
38
|
-
xmipp3/protocols/protocol_ctf_consensus.py,sha256=
|
|
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=
|
|
41
|
-
xmipp3/protocols/protocol_ctf_micrographs.py,sha256=
|
|
42
|
-
xmipp3/protocols/protocol_deep_center.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
59
|
-
xmipp3/protocols/protocol_movie_dose_analysis.py,sha256=
|
|
60
|
-
xmipp3/protocols/protocol_movie_gain.py,sha256=
|
|
61
|
-
xmipp3/protocols/protocol_movie_max_shift.py,sha256=
|
|
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=
|
|
79
|
-
xmipp3/protocols/protocol_reconstruct_highres.py,sha256=
|
|
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=
|
|
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=
|
|
99
|
-
xmipp3/protocols/protocol_tilt_analysis.py,sha256=
|
|
100
|
-
xmipp3/protocols/protocol_trigger_data.py,sha256=
|
|
101
|
-
xmipp3/protocols/protocol_validate_fscq.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
158
|
-
xmipp3/tests/test_protocols_xmipp_3d.py,sha256=
|
|
159
|
-
xmipp3/tests/test_protocols_xmipp_mics.py,sha256=
|
|
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=
|
|
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=
|
|
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/
|
|
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=
|
|
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.
|
|
202
|
-
scipion_em_xmipp-24.
|
|
203
|
-
scipion_em_xmipp-24.
|
|
204
|
-
scipion_em_xmipp-24.
|
|
205
|
-
scipion_em_xmipp-24.
|
|
206
|
-
scipion_em_xmipp-24.
|
|
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,,
|
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 .
|
|
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
|
-
|
|
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.
|
|
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':
|
|
69
|
-
'LD_LIBRARY_PATH':
|
|
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
|
-
|
|
122
|
-
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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
|