def ply2gii(in_file, metadata, out_file=None):
    """Convert from ply to GIfTI"""
    from pathlib import Path
    from numpy import eye
    from nibabel.gifti import (
        GiftiMetaData, GiftiCoordSystem, GiftiImage, GiftiDataArray,
    )
    from pyntcloud import PyntCloud

    in_file = Path(in_file)
    surf = PyntCloud.from_file(str(in_file))

    # Update centroid metadata
    metadata.update(
        zip(('SurfaceCenterX', 'SurfaceCenterY', 'SurfaceCenterZ'),
            ['%.4f' % c for c in surf.centroid])
    )

    # Prepare data arrays
    da = (
        GiftiDataArray(
            data=surf.xyz.astype('float32'),
            datatype='NIFTI_TYPE_FLOAT32',
            intent='NIFTI_INTENT_POINTSET',
            meta=GiftiMetaData.from_dict(metadata),
            coordsys=GiftiCoordSystem(xform=eye(4), xformspace=3)),
        GiftiDataArray(
            data=surf.mesh.values,
            datatype='NIFTI_TYPE_INT32',
            intent='NIFTI_INTENT_TRIANGLE',
            coordsys=None))
    surfgii = GiftiImage(darrays=da)

    if out_file is None:
        out_file = fname_presuffix(
            in_file.name, suffix='.gii', use_ext=False, newpath=str(Path.cwd()))

    surfgii.to_filename(str(out_file))
    return out_file
def ply2gii ( in_file , metadata , out_file = None ) : from pathlib import Path from numpy import eye from nibabel . gifti import ( GiftiMetaData , GiftiCoordSystem , GiftiImage , GiftiDataArray , ) from pyntcloud import PyntCloud in_file = Path ( in_file ) surf = PyntCloud . from_file ( str ( in_file ) ) metadata . update ( zip ( ( 'SurfaceCenterX' , 'SurfaceCenterY' , 'SurfaceCenterZ' ) , [ '%.4f' % c for c in surf . centroid ] ) ) da = ( GiftiDataArray ( data = surf . xyz . astype ( 'float32' ) , datatype = 'NIFTI_TYPE_FLOAT32' , intent = 'NIFTI_INTENT_POINTSET' , meta = GiftiMetaData . from_dict ( metadata ) , coordsys = GiftiCoordSystem ( xform = eye ( 4 ) , xformspace = 3 ) ) , GiftiDataArray ( data = surf . mesh . values , datatype = 'NIFTI_TYPE_INT32' , intent = 'NIFTI_INTENT_TRIANGLE' , coordsys = None ) ) surfgii = GiftiImage ( darrays = da ) if out_file is None : out_file = fname_presuffix ( in_file . name , suffix = '.gii' , use_ext = False , newpath = str ( Path . cwd ( ) ) ) surfgii . to_filename ( str ( out_file ) ) return out_file
Convert from ply to GIfTI