Cardiac atlases

Cardiac atlases#

cardiac-geometries also have support for downloading and converting geometries coming from atlases. Currently we only support data coming from the Bai et. al atlas which is found at https://zenodo.org/records/4506463

You can use the command

!cardiac-geometries atlas-bai --help
                                                                                
 Usage: cardiac-geometries atlas-bai [OPTIONS] N                                
                                                                                
 Create meshes from instances of https://zenodo.org/records/4506463             
                                                                                
╭─ Options ────────────────────────────────────────────────────────────────────╮
 --outdir         -o  DIRECTORY  Output directory, default is 'bai-atlas'     
 --force          -f             Force regeneration of files                  
 --verbose        -v             Print more information                       
 --copy-original                 Copy original files into output directory    
 --create-fibers                 Create fibers with LDRB algorithm            
 --coarsening     -c             Coarsen the mesh                             
 --ffun                          Create facet function                        
 --help                          Show this message and exit.                  
╰──────────────────────────────────────────────────────────────────────────────╯

to work with the atlas data. For example say you want to download data for instance number 4, then you can do

!cardiac-geometries atlas-bai 4 -o atlas-data
Downloading https://zenodo.org/records/4506463/files/instances_001_to_010.tar.gz?download=1 to /__w/cardiac-geometries/cardiac-geometries/docs/atlas-data/instances_001_to_010.tar.gz. This may take a while.
Traceback (most recent call last):
  File "/usr/bin/cardiac-geometries", line 8, in <module>
    sys.exit(app())
  File "/usr/lib/python3/dist-packages/rich_click/rich_command.py", line 402, in __call__
    return super().__call__(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1631, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/rich_click/rich_command.py", line 216, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 2032, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 1415, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 910, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/cardiac_geometries/cli.py", line 1076, in atlas_bai
    path, headers = urlretrieve(url, outdir / filename)
  File "/usr/lib/python3.10/urllib/request.py", line 241, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "/usr/lib/python3.10/urllib/request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.10/urllib/request.py", line 525, in open
    response = meth(req, response)
  File "/usr/lib/python3.10/urllib/request.py", line 634, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.10/urllib/request.py", line 563, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.10/urllib/request.py", line 496, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.10/urllib/request.py", line 643, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 504: Gateway Time-out

which will output the data in the folder atlas-data

!ls -R atlas-data
atlas-data:

Now the data inside atlas-data/instance_004/original can be read by dolfin.