diff --git a/bullseye_workflow/create_flairreg_pipeline.py b/bullseye_workflow/create_flairreg_pipeline.py index 847f1e83cf33e8a29ed553cf09f93d3cdf32db57..19d5320e373beecb675ffac7bfe642700fa20161 100644 --- a/bullseye_workflow/create_flairreg_pipeline.py +++ b/bullseye_workflow/create_flairreg_pipeline.py @@ -1,7 +1,6 @@ from __future__ import division import nipype.pipeline.engine as pe -from nipype import SelectFiles import nipype.interfaces.utility as util from nipype.interfaces.freesurfer import ApplyVolTransform, BBRegister from nipype.interfaces.fsl import ImageStats diff --git a/bullseye_workflow/utils.py b/bullseye_workflow/utils.py index 8088435a8dfcbef3d737fc34ab81912ebef44355..c1bac88f4458c8e8982d4759436cbc8b1fd65c5f 100644 --- a/bullseye_workflow/utils.py +++ b/bullseye_workflow/utils.py @@ -16,7 +16,7 @@ def filter_labels(in_file, include_superlist, fixed_id=None, map_pairs_list=None # read label file and create output in_nib = nib.load(in_file) - in0 = in_nib.get_data() + in0 = in_nib.get_fdata() out0 = np.zeros(in0.shape, dtype=in0.dtype) # for each group of labels in subset assign them the same id (either 1st in subset or fixed-id, in case given) @@ -50,11 +50,11 @@ def norm_dist_map(orig_file, dest_file): orig_nib = nib.load(orig_file) dest_nib = nib.load(dest_file) - orig = orig_nib.get_data() - dest = dest_nib.get_data() + orig = orig_nib.get_fdata() + dest = dest_nib.get_fdata() - dist_orig = distance_transform_edt(np.logical_not(orig.astype(np.bool))) - dist_dest = distance_transform_edt(np.logical_not(dest.astype(np.bool))) + dist_orig = distance_transform_edt(np.logical_not(orig.astype(bool))) + dist_dest = distance_transform_edt(np.logical_not(dest.astype(bool))) # normalized distance (0 in origin to 1 in dest) ndist = dist_orig / (dist_orig + dist_dest) @@ -71,15 +71,15 @@ def create_shells(ndist_file, n_shells=4, out_file = 'shells.nii.gz', mask_file= import numpy as np ndist_nib = nib.load(ndist_file) - ndist = ndist_nib.get_data() + ndist = ndist_nib.get_fdata() # if mask is provided, use it to mask-out regions outside it if mask_file is not None: mask_nib = nib.load(mask_file) assert mask_nib.header.get_data_shape() == ndist_nib.header.get_data_shape(), "Different shapes of images" - mask = mask_nib.get_data() > 0 + mask = mask_nib.get_fdata() > 0 - out = np.zeros(ndist.shape, dtype=np.int8) + out = np.zeros(ndist.shape, dtype=np.float64) limits = np.linspace(0., 1., n_shells+1) for i in np.arange(n_shells)+1: @@ -91,7 +91,7 @@ def create_shells(ndist_file, n_shells=4, out_file = 'shells.nii.gz', mask_file= out[np.isclose(ndist, 0.)] = 0 # need to assign zero to ventricles because of >= above aux_hdr = ndist_nib.header - aux_hdr.set_data_dtype(np.int8) + aux_hdr.set_data_dtype(np.float64) out_nib = nib.Nifti1Image(out, ndist_nib.affine, aux_hdr) nib.save(out_nib, out_file) @@ -110,28 +110,30 @@ def merge_labels(in1_file, in2_file, out_file='merged.nii.gz', intersect=False): assert in1_nib.header.get_data_shape() == in2_nib.header.get_data_shape(), "Different shapes of images" - in1 = in1_nib.get_data() - in2 = in2_nib.get_data() + in1 = in1_nib.get_fdata() + in2 = in2_nib.get_fdata() out = None # if not intersection, simply include labels from 'in2' into 'in1' if not intersect: - out = np.zeros(in1.shape, dtype=np.int8) + out = np.zeros(in1.shape, dtype=np.float64) #use floating integer because this is the format returned by get_fdata() out[:] = in1[:] mask = in2 > 0 out[mask] = in2[mask] # overwrite in1 where in2 > 0 + out=np.round(out) #round float output so that correct first decimal is achieved + print(np.unique(out.ravel())) aux_hdr = in1_nib.header - aux_hdr.set_data_dtype(np.int8) + aux_hdr.set_data_dtype(np.float64) # if intersection, create new label-set as cartesian product of the two sets else: - out = np.zeros(in1.shape, dtype=np.int32) + out = np.zeros(in1.shape, dtype=np.float64) u1_set = np.unique(in1.ravel()) u2_set = np.unique(in2.ravel()) @@ -144,10 +146,10 @@ def merge_labels(in1_file, in2_file, out_file='merged.nii.gz', intersect=False): mask2 = in2 == u2 mask3 = np.logical_and(mask1, mask2) if not np.any(mask3): continue - out[mask3] = int(str(u1) + str(u2)) # new label id by concatenating [u1, u2] + out[mask3] = int(str(round(u1)) + str(round(u2))) # new label id by concatenating rounded [u1, u2] aux_hdr = in1_nib.header - aux_hdr.set_data_dtype(np.int32) + aux_hdr.set_data_dtype(np.float64) out_nib = nib.Nifti1Image(out, in1_nib.affine, aux_hdr) nib.save(out_nib, out_file) @@ -176,17 +178,17 @@ def generate_wmparc(incl_file, ndist_file, label_file, incl_labels=None, verbose # create inclusion mask incl_mask = None - incl_aux = incl_nib.get_data() + incl_aux = incl_nib.get_fdata() if incl_labels is None: incl_mask = incl_aux > 0 else: - incl_mask = np.zeros(incl_nib.header.get_data_shape(), dtype=np.bool) + incl_mask = np.zeros(incl_nib.header.get_data_shape(), dtype=bool) for lab in incl_labels: incl_mask[incl_aux == lab] = True # get rest of numpy arrays - ndist = ndist_nib.get_data() - label = label_nib.get_data() + ndist = ndist_nib.get_fdata() + label = label_nib.get_fdata() # get DONE and processing masks DONE_mask = label > 0 # this is for using freesurfer wmparc @@ -333,7 +335,7 @@ def make_list(in1,in2): return([in1,in2]) -def extract_parcellation(in1_file, in2_file, option="sum"): +def extract_parcellation(in1_file, in2_file, subject_id, option="sum"): """extracts WMH volumes from Bullseye parcellation: Parameters @@ -342,6 +344,8 @@ def extract_parcellation(in1_file, in2_file, option="sum"): The file location of the coregistered WMH probability image in2_file: str The file location of the Bullseye segmentation with labels 51:244 + subject_id: str + Subject identifier option: str The way the WMH volume attributed to Bullseye regions is calculated: thr refers to adding up all voxels with >0.1 equally in the bins representing Bullseye regions @@ -365,7 +369,7 @@ def extract_parcellation(in1_file, in2_file, option="sum"): in1 = in1_nib.get_fdata() in2 = in2_nib.get_fdata() - #in1_nib.get_data_dtype() + if option=="thr": @@ -380,9 +384,9 @@ def extract_parcellation(in1_file, in2_file, option="sum"): elif option=="sum": out_file='res_sum.txt' counts=[] - for i in np.nditer(np.array([51,52,53,54,111,112,113,114,121,122,123,124,131,132,133,134,141,142,143,144,211,212,213,214,221,222,223,224,231,232,233,234,241,242,243,244])): - maskedWML=in1[in2==i] - counts.append(sum(maskedWML)) + for i in np.nditer(np.array([51,52,53,54,111,112,113,114,121,122,123,124,131,132,133,134,141,142,143,144,211,212,213,214,221,222,223,224,231,232,233,234,241,242,243,244])): + maskedWML=in1[in2==i] + counts.append(sum(maskedWML)) else: raise Exception("No acceptable extraction method given") diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000000000000000000000000000000000000..bc0fa59b9d1286f99a95fbe073bee61eba7a11b1 --- /dev/null +++ b/environment.yml @@ -0,0 +1,141 @@ +name: below +channels: + - conda-forge + - defaults +dependencies: + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=2_gnu + - atk-1.0=2.38.0=hd4edc92_1 + - brotli=1.1.0=hd590300_1 + - brotli-bin=1.1.0=hd590300_1 + - brotli-python=1.1.0=py310hc6cd4ac_1 + - bzip2=1.0.8=hd590300_5 + - ca-certificates=2023.12.12=h06a4308_0 + - cairo=1.18.0=h3faef2a_0 + - certifi=2023.11.17=pyhd8ed1ab_0 + - charset-normalizer=3.3.2=pyhd8ed1ab_0 + - ci-info=0.3.0=pyhd8ed1ab_0 + - click=8.1.7=unix_pyh707e725_0 + - contourpy=1.2.0=py310hd41b1e2_0 + - cycler=0.12.1=pyhd8ed1ab_0 + - etelemetry=0.3.1=pyhd8ed1ab_0 + - expat=2.5.0=hcb278e6_1 + - filelock=3.13.1=pyhd8ed1ab_0 + - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 + - font-ttf-inconsolata=3.000=h77eed37_0 + - font-ttf-source-code-pro=2.038=h77eed37_0 + - font-ttf-ubuntu=0.83=h77eed37_1 + - fontconfig=2.14.2=h14ed4e7_0 + - fonts-conda-ecosystem=1=0 + - fonts-conda-forge=1=0 + - fonttools=4.47.2=py310h2372a71_0 + - freetype=2.12.1=h267a509_2 + - fribidi=1.0.10=h36c2ea0_0 + - gdk-pixbuf=2.42.10=h829c605_4 + - gettext=0.21.1=h27087fc_0 + - giflib=5.2.1=h0b41bf4_3 + - graphite2=1.3.14=h295c915_1 + - graphviz=9.0.0=h78e8752_1 + - gtk2=2.24.33=h7f000aa_3 + - gts=0.7.6=h977cf35_4 + - harfbuzz=8.3.0=h3d44ed6_0 + - icu=73.2=h59595ed_0 + - idna=3.6=pyhd8ed1ab_0 + - importlib-metadata=7.0.1=pyha770c72_0 + - importlib_resources=6.1.1=pyhd8ed1ab_0 + - isodate=0.6.1=pyhd8ed1ab_0 + - kiwisolver=1.4.5=py310hd41b1e2_1 + - lcms2=2.16=hb7c19ff_0 + - ld_impl_linux-64=2.40=h41732ed_0 + - lerc=4.0.0=h27087fc_0 + - libblas=3.9.0=20_linux64_openblas + - libbrotlicommon=1.1.0=hd590300_1 + - libbrotlidec=1.1.0=hd590300_1 + - libbrotlienc=1.1.0=hd590300_1 + - libcblas=3.9.0=20_linux64_openblas + - libdeflate=1.19=hd590300_0 + - libexpat=2.5.0=hcb278e6_1 + - libffi=3.4.4=h6a678d5_0 + - libgcc-ng=13.2.0=h807b86a_3 + - libgd=2.3.3=h119a65a_9 + - libgfortran-ng=13.2.0=h69a702a_3 + - libgfortran5=13.2.0=ha4646dd_3 + - libglib=2.78.3=h783c2da_0 + - libgomp=13.2.0=h807b86a_3 + - libiconv=1.17=hd590300_2 + - libjpeg-turbo=3.0.0=hd590300_1 + - liblapack=3.9.0=20_linux64_openblas + - libnsl=2.0.1=hd590300_0 + - libopenblas=0.3.25=pthreads_h413a1c8_0 + - libpng=1.6.39=h753d276_0 + - librsvg=2.56.3=he3f83f7_1 + - libsqlite=3.44.2=h2797004_0 + - libstdcxx-ng=13.2.0=h7e041cc_3 + - libtiff=4.6.0=ha9c0a0a_2 + - libuuid=2.38.1=h0b41bf4_0 + - libwebp=1.3.2=h658648e_1 + - libwebp-base=1.3.2=hd590300_0 + - libxcb=1.15=h0b41bf4_0 + - libxcrypt=4.4.36=hd590300_1 + - libxml2=2.12.3=h232c23b_0 + - libxslt=1.1.39=h76b75d6_0 + - libzlib=1.2.13=hd590300_5 + - looseversion=1.3.0=pyhd8ed1ab_0 + - lxml=5.1.0=py310hcfd0673_0 + - matplotlib-base=3.8.2=py310h62c0568_0 + - munkres=1.1.4=pyh9f0ad1d_0 + - ncurses=6.4=h59595ed_2 + - networkx=3.2.1=pyhd8ed1ab_0 + - nibabel=5.2.0=pyha770c72_0 + - nipype=1.8.6=py310hff52083_0 + - numpy=1.26.3=py310hb13e2d6_0 + - openjpeg=2.5.0=h488ebb8_3 + - openssl=3.2.0=hd590300_1 + - packaging=23.2=pyhd8ed1ab_0 + - pango=1.50.14=ha41ecd1_2 + - pcre2=10.42=hcad00b1_0 + - pillow=10.2.0=py310h01dd4db_0 + - pip=23.3.2=pyhd8ed1ab_0 + - pixman=0.43.0=h59595ed_0 + - prov=2.0.0=pyhd3deb0d_0 + - psutil=5.9.7=py310h2372a71_0 + - pthread-stubs=0.4=h36c2ea0_1001 + - pydot=2.0.0=py310hff52083_0 + - pyparsing=3.1.1=pyhd8ed1ab_0 + - pysocks=1.7.1=pyha2e5f31_6 + - python=3.10.13=hd12c33a_1_cpython + - python-dateutil=2.8.2=pyhd8ed1ab_0 + - python_abi=3.10=4_cp310 + - rdflib=7.0.0=pyhd8ed1ab_0 + - readline=8.2=h8228510_1 + - requests=2.31.0=pyhd8ed1ab_0 + - scipy=1.11.4=py310hb13e2d6_0 + - setuptools=69.0.3=pyhd8ed1ab_0 + - simplejson=3.19.2=py310h2372a71_0 + - six=1.16.0=pyh6c4a22f_0 + - tk=8.6.13=noxft_h4845f30_101 + - traits=6.3.2=py310h5764c6d_1 + - unicodedata2=15.1.0=py310h2372a71_0 + - urllib3=2.1.0=pyhd8ed1ab_0 + - wheel=0.42.0=pyhd8ed1ab_0 + - xorg-kbproto=1.0.7=h7f98852_1002 + - xorg-libice=1.1.1=hd590300_0 + - xorg-libsm=1.2.4=h7391055_0 + - xorg-libx11=1.8.7=h8ee46fc_0 + - xorg-libxau=1.0.11=hd590300_0 + - xorg-libxdmcp=1.1.3=h7f98852_0 + - xorg-libxext=1.3.4=h0b41bf4_2 + - xorg-libxrender=0.9.11=hd590300_0 + - xorg-renderproto=0.11.1=h7f98852_1002 + - xorg-xextproto=7.3.0=h0b41bf4_1003 + - xorg-xproto=7.0.31=h7f98852_1007 + - xvfbwrapper=0.2.9=pyhd8ed1ab_1005 + - xz=5.4.5=h5eee18b_0 + - zipp=3.17.0=pyhd8ed1ab_0 + - zlib=1.2.13=hd590300_5 + - zstd=1.5.5=hfc55251_0 + - pip: + - pandas==2.1.4 + - pytz==2023.3.post1 + - tzdata==2023.4 +prefix: /data/u_fbeyer_software/miniconda3/envs/below diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..f12ce59b34bf42680f845a171057d3130c07e71c --- /dev/null +++ b/requirements.txt @@ -0,0 +1,44 @@ +Brotli @ file:///home/conda/feedstock_root/build_artifacts/brotli-split_1695989787169/work +certifi @ file:///home/conda/feedstock_root/build_artifacts/certifi_1700303426725/work/certifi +charset-normalizer @ file:///home/conda/feedstock_root/build_artifacts/charset-normalizer_1698833585322/work +ci-info @ file:///home/conda/feedstock_root/build_artifacts/ci-info_1676863233411/work +click @ file:///home/conda/feedstock_root/build_artifacts/click_1692311806742/work +contourpy @ file:///home/conda/feedstock_root/build_artifacts/contourpy_1699041363598/work +cycler @ file:///home/conda/feedstock_root/build_artifacts/cycler_1696677705766/work +etelemetry @ file:///home/conda/feedstock_root/build_artifacts/etelemetry_1697214650046/work +filelock @ file:///home/conda/feedstock_root/build_artifacts/filelock_1698714947081/work +fonttools @ file:///home/conda/feedstock_root/build_artifacts/fonttools_1704979835861/work +idna @ file:///home/conda/feedstock_root/build_artifacts/idna_1701026962277/work +importlib-metadata @ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1703269254275/work +importlib-resources @ file:///home/conda/feedstock_root/build_artifacts/importlib_resources_1699364556997/work +isodate @ file:///home/conda/feedstock_root/build_artifacts/isodate_1639582763789/work +kiwisolver @ file:///home/conda/feedstock_root/build_artifacts/kiwisolver_1695379902431/work +looseversion @ file:///home/conda/feedstock_root/build_artifacts/looseversion_1688586477865/work +lxml @ file:///home/conda/feedstock_root/build_artifacts/lxml_1704724217654/work +matplotlib @ file:///home/conda/feedstock_root/build_artifacts/matplotlib-suite_1700509477637/work +munkres==1.1.4 +networkx @ file:///home/conda/feedstock_root/build_artifacts/networkx_1698504735452/work +nibabel @ file:///home/conda/feedstock_root/build_artifacts/nibabel_1702339005637/work +nipype @ file:///home/conda/feedstock_root/build_artifacts/nipype_1681226807867/work +numpy @ file:///home/conda/feedstock_root/build_artifacts/numpy_1704280375097/work/dist/numpy-1.26.3-cp310-cp310-linux_x86_64.whl#sha256=d6b1cccf494a7701b8dd18911cff7c805fd90e8f4a24cde7c8e40f7805c0765d +packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1696202382185/work +pandas==2.1.4 +pillow @ file:///home/conda/feedstock_root/build_artifacts/pillow_1704252020178/work +prov @ file:///home/conda/feedstock_root/build_artifacts/prov_1604323926302/work +psutil @ file:///home/conda/feedstock_root/build_artifacts/psutil_1702833087123/work +pydot @ file:///home/conda/feedstock_root/build_artifacts/pydot_1704460738501/work +pyparsing @ file:///home/conda/feedstock_root/build_artifacts/pyparsing_1690737849915/work +PySocks @ file:///home/conda/feedstock_root/build_artifacts/pysocks_1661604839144/work +python-dateutil @ file:///home/conda/feedstock_root/build_artifacts/python-dateutil_1626286286081/work +pytz==2023.3.post1 +rdflib @ file:///home/conda/feedstock_root/build_artifacts/rdflib-split_1690986372614/work +requests @ file:///home/conda/feedstock_root/build_artifacts/requests_1684774241324/work +SciPy @ file:///home/conda/feedstock_root/build_artifacts/scipy-split_1700812469549/work/dist/scipy-1.11.4-cp310-cp310-linux_x86_64.whl#sha256=136e231ccb8768e60c17ed60f2c2423262d3dfd8136f373e715db9dd77617e41 +simplejson @ file:///home/conda/feedstock_root/build_artifacts/simplejson_1696595864300/work +six @ file:///home/conda/feedstock_root/build_artifacts/six_1620240208055/work +traits @ file:///home/conda/feedstock_root/build_artifacts/traits_1649412908388/work +tzdata==2023.4 +unicodedata2 @ file:///home/conda/feedstock_root/build_artifacts/unicodedata2_1695847980273/work +urllib3 @ file:///home/conda/feedstock_root/build_artifacts/urllib3_1699933488691/work +xvfbwrapper @ file:///home/conda/feedstock_root/build_artifacts/xvfbwrapper_1648493254892/work +zipp @ file:///home/conda/feedstock_root/build_artifacts/zipp_1695255097490/work diff --git a/spec-file.txt b/spec-file.txt new file mode 100644 index 0000000000000000000000000000000000000000..218d048f897ec5033de817d4b6b2f1cce3a1d875 --- /dev/null +++ b/spec-file.txt @@ -0,0 +1,136 @@ +# This file may be used to create an environment using: +# $ conda create --name <env> --file <this file> +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2023.12.12-h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_1.conda +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_3.conda +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-4_cp310.conda +https://conda.anaconda.org/conda-forge/noarch/tzdata-2023d-h0c530f3_0.conda +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_3.conda +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_3.conda +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h0b41bf4_3.conda +https://repo.anaconda.com/pkgs/main/linux-64/graphite2-1.3.14-h295c915_1.conda +https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.19-hd590300_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.4.4-h6a678d5_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_3.conda +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.2-hd590300_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-h59595ed_2.conda +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.0-hd590300_1.conda +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.0-h59595ed_0.conda +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/xz-5.4.5-h5eee18b_0.conda +https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_3.conda +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.39-h753d276_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.2-h2797004_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.3-h232c23b_0.conda +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.42-hcad00b1_0.conda +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.3-h783c2da_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-ha9c0a0a_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.13-hd12c33a_1_cpython.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py310hc6cd4ac_1.conda +https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/ci-info-0.3.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h829c605_4.conda +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda +https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py310hd41b1e2_1.conda +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.2-h658648e_1.conda +https://conda.anaconda.org/conda-forge/noarch/looseversion-1.3.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/lxml-5.1.0-py310hcfd0673_0.conda +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-h488ebb8_3.conda +https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.7-py310h2372a71_0.conda +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/setuptools-69.0.3-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.19.2-py310h2372a71_0.conda +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/traits-6.3.2-py310h5764c6d_1.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.1.0-py310h2372a71_0.conda +https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda +https://conda.anaconda.org/conda-forge/noarch/xvfbwrapper-0.2.9-pyhd8ed1ab_1005.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.47.2-py310h2372a71_0.conda +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.1-pyha770c72_0.conda +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h119a65a_9.conda +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda +https://conda.anaconda.org/conda-forge/linux-64/pillow-10.2.0-py310h01dd4db_0.conda +https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/urllib3-2.1.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.3-py310hb13e2d6_0.conda +https://conda.anaconda.org/conda-forge/noarch/rdflib-7.0.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py310hd41b1e2_0.conda +https://conda.anaconda.org/conda-forge/noarch/etelemetry-0.3.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/nibabel-5.2.0-pyha770c72_0.conda +https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-ha41ecd1_2.conda +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.4-py310hb13e2d6_0.conda +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h7f000aa_3.conda +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-he3f83f7_1.conda +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.2-py310h62c0568_0.conda +https://conda.anaconda.org/conda-forge/linux-64/graphviz-9.0.0-h78e8752_1.conda +https://conda.anaconda.org/conda-forge/linux-64/pydot-2.0.0-py310hff52083_0.conda +https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/nipype-1.8.6-py310hff52083_0.conda