text:
"""Module for functions in the Vascular Modeling Toolkit (VMTK).

For more details on VMTK, go to www.vmtk.org. For more details specifically on
VMTK scripts, go to www.vmtk.org/vmtkscripts.

To a large extent, function names were chosen to match the names of
corresponding vmtk scripts. Parts of the documentation were taken from
www.vmtk.org.

"""

from vmtk import pypes, vmtkscripts

def vmtkbifurcationreferencesystems(centerlines):
    """Compute reference system for each bifurcation of a vessel tree.

    Args:
        centerlines: Centerlines split into branches.

    Returns:
        Reference system for each bifurcation.
        Pointdata (selection):
            Normal: Normal of the bifurcation plane.
            UpNormal: Normal pointing toward the bifurcation apex.

    """
    bifrefsystem = vmtkscripts.vmtkBifurcationReferenceSystems()
    bifrefsystem.Centerlines = centerlines
    bifrefsystem.RadiusArrayName = 'MaximumInscribedSphereRadius'
    bifrefsystem.BlankingArrayName = 'Blanking'
    bifrefsystem.GroupIdsArrayName = 'GroupIds'
    bifrefsystem.Execute()
    return bifrefsystem.ReferenceSystems

def vmtkbifurcationsections(surface, centerlines, distance=1):
    """Compute sections located a fixed number of maximally inscribed
    sphere radii away from each bifurcation.

    Args:
        surface: Surface split into branches.
        centerlines: Centerlines split into branches.
        distance: Distance from bifurcation in number of maximally inscribed
            spheres, where each sphere touches the center of the previous one.

    Returns:
        Polydata with one cross section per branch of each bifurcation.
        Celldata (selection):
            BifurcationSectionArea: Section area.
            BifurcationSectionMinSize: Minimum diameter of section.
            BifurcationSectionMaxSize: Maximum diameter of section.

    """
    bifsections = vmtkscripts.vmtkBifurcationSections()
    bifsections.Surface = surface
    bifsections.Centerlines = centerlines
    bifsections.NumberOfDistanceSpheres = distance
    bifsections.RadiusArrayName = 'MaximumInscribedSphereRadius'
    bifsections.GroupIdsArrayName = 'GroupIds'
    bifsections.CenterlineIdsArrayName = 'CenterlineIds'
    bifsections.TractIdsArrayName = 'TractIds'
    bifsections.BlankingArrayName = 'Blanking'
    bifsections.Execute()
    return bifsections.BifurcationSections

def vmtkbifurcationvectors(centerlines, referencesystems):
    """Compute bifurcation vectors.

    Args:
        centerlines: Centerlines split into branches.
        referencesystems: Bifurcation reference systems.

    Returns:
        Vectors in the direction of the parent and daughter branches of each
        bifurcation.
        Pointdata (selection):
            BifurcationVectors: Bifurcation vectors.
            InPlaneBifurcationVectors: BifurcationVectors projected onto the
                bifurcation plane.
            InPlaneBifurcationVectorAngles: Angles (in radians) between
                InPlaneBifurcationVectors and the UpNormal.

    """
    bifvectors = vmtkscripts.vmtkBifurcationVectors()
    bifvectors.Centerlines = centerlines
    bifvectors.ReferenceSystems = referencesystems
    bifvectors.RadiusArrayName = 'MaximumInscribedSphereRadius'
    bifvectors.GroupIdsArrayName = 'GroupIds'
    bifvectors.CenterlineIdsArrayName = 'CenterlineIds'
    bifvectors.TractIdsArrayName = 'TractIds'
    bifvectors.BlankingArrayName = 'Blanking'
    bifvectors.ReferenceSystemsNormalArrayName = 'Normal'
    bifvectors.ReferenceSystemsUpNormalArrayName = 'UpNormal'
    bifvectors.Execute()
    return bifvectors.BifurcationVectors

def vmtkbranchclipper(surface, centerlines, groupidlist=[], insideout=0):
    """Split surface into branches.

    Args:
        surface: Surface mesh of vascular geometry.
        centerlines: Centerlines split into branches.
        groupidlist: List of branches (specified by their GroupIds) to extract.
        insideout (bool): Either keep or remove the branches in groupidlist.

    Returns:
        Surface split into branches or, if specified, only the selected
        branches.

    """
    clipper = vmtkscripts.vmtkBranchClipper()
    clipper.Surface = surface
    clipper.Centerlines = centerlines
    clipper.InsideOut = insideout
    clipper.GroupIds = groupidlist
    clipper.GroupIdsArrayName = 'GroupIds'
    clipper.RadiusArrayName = 'MaximumInscribedSphereRadius'
    clipper.BlankingArrayName = 'Blanking'
    clipper.Execute()
    return clipper.Surface

def vmtkbranchextractor(centerlines):
    """Split centerlines into branches.

    Args:
        centerlines: Centerlines.

    Returns:
        Centerlines split into branches.
        Celldata (selection):
            CenterlineId: Cellid of centerline from which the tract was split.
            TractId: Id identifying each tract along one centerline.
            GroupId: Id of the group to which the tract belongs.
            Blanking: Boolean indicating whether tract belongs to bifurcation.

    """
    extractor = vmtkscripts.vmtkBranchExtractor()
    extractor.Centerlines = centerlines
    extractor.RadiusArrayName = 'MaximumInscribedSphereRadius'
    extractor.Execute()
    return extractor.Centerlines

def vmtkbranchgeometry(centerlines, smoothing=0, iterations=100):
    """Compute geometric variables for each branch of a vessel tree.

    Args:
        centerlines: Centerlines split into branches.
        smoothing (bool): Laplacian smooth branches before computing geometric
            variables.
        iterations: Number of smoothing iterations.

    Returns:
        Description of geometry for each branch. Vertices at (0, 0, 0), one per
        branch, are used as placeholders to assign pointdata with values
        for the geometric variables.
        Pointdata (selection):
            Length: Branch length.
            Curvature: Average curvature of branch.
            Torsion: Average torsion of branch.
            Tortuosity: Tortuosity of branch.

    Note:
        Smoothing doesn't seem to work, it does work with
        vmtkcenterlinegeometry.

    """
    branchgeometry = vmtkscripts.vmtkBranchGeometry()
    branchgeometry.Centerlines = centerlines
    branchgeometry.GroupIdsArrayName = 'GroupIds'
    branchgeometry.RadiusArrayName = 'MaximumInscribedSphereRadius'
    branchgeometry.BlankingArrayName = 'Blanking'
    branchgeometry.LineSmoothing = smoothing
    branchgeometry.NumberOfSmoothingIterations = iterations
    branchgeometry.Execute()
    return branchgeometry.GeometryData

def vmtkbranchmapping(surface, centerlines, referencesystems):
    """Map and stretch the longitudinal metrics obtained with
    vmtkbranchmetrics.

    Args:
        surface: Surface split into branches.
        centerlines: Centerlines split into branches.
        referencesystems: Bifurcation reference systems.

    Returns:
        Surface with the longitudinal metric mapped and stretched to correctly
        account for the presence of insertion regions at bifurcations.
        Pointdata (selection):
            StretchedMapping: Corrected longitudinal metric.

    """
    mapper = vmtkscripts.vmtkBranchMapping()
    mapper.Surface = surface
    mapper.Centerlines = centerlines
    mapper.ReferenceSystems = referencesystems
    mapper.AbscissasArrayName = 'Abscissas'
    mapper.NormalsArrayName = 'ParallelTransportNormals'
    mapper.GroupIdsArrayName = 'GroupIds'
    mapper.CenterlineIdsArrayName = 'CenterlineIds'
    mapper.TractIdsArrayName = 'TractIds'
    mapper.ReferenceSystemsNormalArrayName = 'Normal'
    mapper.RadiusArrayName = 'MaximumInscribedSphereRadius'
    mapper.BlankingArrayName = 'Blanking'
    mapper.AngularMetricArrayName = 'AngularMetric'
    mapper.AbscissaMetricArrayName = 'AbscissaMetric'
    mapper.Execute()
    return mapper.Surface

def vmtkbranchmetrics(surface, centerlines):
    """Compute longitudinal and circumferential metrics for each branch.

    Args:
        surface: Surface split into branches.
        centerlines: Centerlines split into branches.

    Returns:
        Surface with longitudinal and circumferential metrics for each
        branch.
        Pointdata (selection):
            AbscissaMetric: Curvilinear abscissa of centerlines projected onto
                the surface.
            AngularMetric: Periodic circumferential coordinates of surface mesh
                points around the centerlines, spanning the interval (-pi, pi).
                The zero angle is derived from the ParallelTransportNormals
                pointdata of the centerlines, which can be obtained using
                vmtkcenterlineattributes.

    """
    branchmetrics = vmtkscripts.vmtkBranchMetrics()
    branchmetrics.Surface = surface
    branchmetrics.Centerlines = centerlines
    branchmetrics.AbscissasArrayName = 'Abscissas'
    branchmetrics.NormalsArrayName = 'ParallelTransportNormals'
    branchmetrics.RadiusArrayName = 'MaximumInscribedSphereRadius'
    branchmetrics.GroupIdsArrayName = 'GroupIds'
    branchmetrics.CenterlineIdsArrayName = 'CenterlineIds'
    branchmetrics.TractIdsArrayName = 'TractIds'
    branchmetrics.BlankingArrayName = 'Blanking'
    branchmetrics.Execute()
    return branchmetrics.Surface

def vmtkbranchpatching(surface, longitudinalpatchsize=1.0,
                       circularnumberofpatches=12):
    """Patch surface of each branch.

    Patching means to 'cut' a set of contiguous rectangular regions on the
    surface mesh that follow iso-contours in the StretchedMapping and
    AngularMetric arrays. All the quantities of interest (e.g. wall shear
    stress, oscillatory shear index) are averaged on each of these patches.

    Args:
        surface: Surface split into branches.
        longitudinalpatchsize: 'Length' of the patch along the longitudinal
            direction.
        circularnumberofpatches: Number of patches along the circumference.

    Returns:
        Surface composed of disconnected patches.
        Pointdata:
            All the original pointdata
        Celldata (selection):
            Average of original pointdata on patch to which cell belongs
            Slab: Patch coordinate (integer) in longitudinal direction.
            Sector: Patch coordinate (integer) in circumferential direction.
            PatchArea: Surface area of the patch

    """
    patcher = vmtkscripts.vmtkBranchPatching()
    patcher.Surface = surface
    patcher.LongitudinalPatchSize = longitudinalpatchsize
    patcher.CircularNumberOfPatches = circularnumberofpatches
    patcher.UseConnectivity = 1
    patcher.CircularPatching = 1
    patcher.GroupIdsArrayName = 'GroupIds'
    patcher.LongitudinalMappingArrayName = 'StretchedMapping'
    patcher.CircularMappingArrayName = 'AngularMetric'
    patcher.Execute()
    #return (patcher.Surface, patcher.PatchedData)
    return patcher.Surface

def vmtkbranchsections(surface, centerlines, interval=1):
    """Compute sections at specified intervals (in maximally inscribed sphere
    radii units) labeled by the GroupId of the corresponding branch.

    Args:
        surface: Surface split into branches.
        centerlines: Centerlines split into branches.
        interval: Distance between sections in maximally inscribed sphere radii
            units.

    Returns:
        Polydata with sections.
        Celldata (selection):
            BranchSectionGroupIds: GroupId of corresponding branch
            BranchSectionDistanceSpheres: Distance along the branch in maximally
                inscribed sphere radii

    """
    sectioner = vmtkscripts.vmtkBranchSections()
    sectioner.Surface = surface
    sectioner.Centerlines = centerlines
    sectioner.NumberOfDistanceSpheres = distance
    sectioner.RadiusArrayName = 'MaximumInscribedSphereRadius'
    sectioner.GroupIdsArrayName = 'GroupIds'
    sectioner.CenterlineIdsArrayName = 'CenterlineIds'
    sectioner.TractIdsArrayName = 'TractIds'
    sectioner.BlankingArrayName = 'Blanking'
    sectioner.Execute()
    return sectioner.BranchSections

def vmtkcenterlineattributes(centerlines):
    """Compute centerline attributes.

    Args:
        centerlines: Centerlines.

    Returns:
        Centerlines with attributes.
        Pointdata:
            MaximumInscribedSphereRadius: If the point on the centerline is the
                center of a sphere, this is the radius of the largest possible
                sphere that does not intersect the surface.
            Abscissas: Position along the centerlines. By default, the abscissa
                is measured from the start of the centerlines.
            ParallelTransportNormals: 'Normal' of the centerlines (perpendicular
                to centerline direction).

    """
    clattributes = vmtkscripts.vmtkCenterlineAttributes()
    clattributes.Centerlines = centerlines
    clattributes.Execute()
    return clattributes.Centerlines

def vmtkcenterlinegeometry(centerlines, smoothing=0, iterations=100):
    """Compute the local geometry of centerlines.

    Args:
        centerlines: Centerlines.
        smoothing (bool): Laplacian smooth centerlines before computing
            geometric variables.
        iterations: Number of smoothing iterations.

    Returns:
        Centerlines with geometric variables defined at each point.
        Pointdata (selection):
            Curvature: Local curvature.
            Torsion: Local torsion.
        Celldata (selection):
            Tortuosity: Tortuosity of each centerline.
            Length: Length of each centerline.

    Note:
        Since the computation of the geometric variables depends on first,
        second and third derivatives of the line coordinates, and since such
        derivatives are approximated using a simple finite difference scheme
        along the line, it is very likely that such derivatives will be affected
        by noise that is not appreciable when looking at the line itself. For
        this reason, it might be necessary to run the Laplacian smoothing filter
        before computing the derivatives and the related quantities.

    """
    clgeometry = vmtkscripts.vmtkCenterlineGeometry()
    clgeometry.Centerlines = centerlines
    clgeometry.LineSmoothing = smoothing
    clgeometry.NumberOfSmoothingIterations = iterations
    clgeometry.Execute()
    return clgeometry.Centerlines

def vmtkcenterlinemerge(centerlines, length=.1):
    """Merge centerline tracts belonging to the same groups.

    Args:
        centerlines: Centerlines split into branches.
        length: Distance between centerline points after resampling.

    Returns:
        Centerlines with only one centerline branch per vessel tree branch. The
        centerline branches meet at the bifurcation origins.

    """
    merger = vmtkscripts.vmtkCenterlineMerge()
    merger.Centerlines = centerlines
    merger.Length = length
    merger.RadiusArrayName = 'MaximumInscribedSphereRadius'
    merger.GroupIdsArrayName = 'GroupIds'
    merger.CenterlineIdsArrayName = 'CenterlineIds'
    merger.BlankingArrayName = 'Blanking'
    merger.TractIdsArrayName = 'TractIds'
    merger.Execute()
    return merger.Centerlines

def vmtkcenterlinemodeller(centerlines, size=[64, 64, 64]):
    """Convert a centerline to an image containing the tube function.

    Args:
        centerlines: Centerlines.
        size: Image dimensions.

    Returns:
        Signed distance transform image, with the zero level set being (tapered)
        tubes running from one centerline point to the next with a radius at
        each end corresponding to the local MaximumInscribedSphereRadius.

    """
    modeller = vmtkscripts.vmtkCenterlineModeller()
    modeller.Centerlines = centerlines
    modeller.RadiusArrayName = 'MaximumInscribedSphereRadius'
    modeller.SampleDimensions = size
    modeller.Execute()
    return modeller.Image

def vmtkcenterlineoffsetattributes(centerlines, referencesystems,
    refgroupid=1):
    """Offset centerline attributes to a bifurcation reference system.

    Args:
        centerlines: Centerlines with attributes.
        referencesystems: Bifurcation reference systems.
        refgroupid: GroupId of bifurcation to which to offset the attributes.

    Returns:
        Centerlines with the attributes offset in such a way that the abscissa
        of the closest point to the bifurcation origin is zero and the
        centerline normal at that point coincides with the bifurcation reference
        system normal.

    """
    offsetter = vmtkscripts.vmtkCenterlineOffsetAttributes()
    offsetter.Centerlines = centerlines
    offsetter.ReferenceSystems = referencesystems
    offsetter.ReferenceGroupId = refgroupid
    offsetter.AbscissasArrayName = 'Abscissas'
    offsetter.NormalsArrayName = 'ParallelTransportNormals'
    offsetter.GroupIdsArrayName = 'GroupIds'
    offsetter.CenterlineIdsArrayName = 'CenterlineIds'
    offsetter.ReferenceSystemsNormalArrayName = 'Normal'
    offsetter.Execute()
    return offsetter.Centerlines

def vmtkcenterlineresampling(centerlines, length=.1):
    """Resample input centerlines with a spline filter.

    Args:
        centerlines: Centerlines.
        length: Space between centerline points after resampling.

    Returns:
        Centerlines with equal spacing between centerline points.

    """
    resampler = vmtkscripts.vmtkCenterlineResampling()
    resampler.Centerlines = centerlines
    resampler.Length = length
    resampler.Execute()
    return resampler.Centerlines

def vmtkcenterlines(surface, endpoints=0, interactive=False,
                    sourcepoints=[0, 0, 0], targetpoints=[0, 0, 0]):
    """Compute centerlines of a vascular geometry.

    Args:
        surface: Surface mesh of a vascular geometry.
        endpoints (bool): Include endpoints. By construction, centerlines do
            not reach the source/targetpoints. endpoints=1 bridges the
            start/end of the centerlines to the source/targetpoints.
        interactive (bool): Select source/targetpoints interactively. This
            pops up a VTK window. Follow instructions in terminal.
        sourcepoints: Give barycenters of sourcepoints as in '[0.0, 1.0, 2.0]'.
            In case of multiple sourcepoints, append the lists of each three
            coordinates as in '[0.0, 1.0, 2.0, 3.0, 4.0, 5.0]'.
        targetpoints: Give barycenters of targetpoints following same notation
            as with sourcepoints.

    Returns:
        Centerlines. Each cell of the centerlines polydata is a centerline from
        one of the sourcepoints to one of the targetpoints.

    """
    centerliner = vmtkscripts.vmtkCenterlines()
    centerliner.Surface = surface
    centerliner.AppendEndPoints = endpoints
    if interactive:
        centerliner.SeedSelectorName = 'pickpoint'
    else:
        centerliner.SeedSelectorName = 'pointlist'
        centerliner.SourcePoints = sourcepoints
        centerliner.TargetPoints = targetpoints
    centerliner.Execute()
    return centerliner.Centerlines

def vmtkcenterlinesections(surface, centerlines):
    """Compute sections located at each point of the centerlines.

    Args:
        surface: Surface mesh of vascular geometry.
        centerlines: Centerlines corresponding to surface.

    Returns:
        Polydata with one cross section per branch of each bifurcation.
        Celldata (selection):
            CenterlineSectionArea: Section area.
            CenterlineSectionMinSize: Minimum diameter of section.
            CenterlineSectionMaxSize: Maximum diameter of section.

    """
    sectioner = vmtkscripts.vmtkCenterlineSections()
    sectioner.Surface = surface
    sectioner.Centerlines = centerlines
    sectioner.Execute()
    return sectioner.CenterlineSections

def vmtkcenterlinesmoothing(centerlines, iterations=100):
    """Smooth centerlines with a Laplacian smoothing filter.

    Args:
        centerlines: Centerlines.
        iterations: Number of smoothing iterations.

    Returns:
        Smoothed centerlines.

    """
    smoother = vmtkscripts.vmtkCenterlineSmoothing()
    smoother.Centerlines = centerlines
    smoother.NumberOfSmoothingIterations = iterations
    smoother.Execute()
    return smoother.Centerlines

def vmtkdelaunayvoronoi(surface, removesubresolution=1):
    """Compute Voronoi diagram corresponding to the surface.

    Args:
        surface: Surface mesh.
        removesubresolution (bool): Remove Voronoi points with 'subresolution'
            radii.

    Returns:
        Voronoi diagram.

    Note:
        The Voronoi diagram represents the lumen volume as a set of overlapping
        spheres: the largest spheres correspond to the local minimum lumen
        diameter, the smallest spheres correspond to finer details on the
        surface.

    """
    voronoi = vmtkscripts.vmtkDelaunayVoronoi()
    voronoi.Surface = surface
    voronoi.RemoveSubresolutionTetrahedra = removesubresolution
    voronoi.Execute()
    return voronoi.VoronoiDiagram

def vmtkdistancetocenterlines(surface, centerlines):
    """Compute distance from the surface to the centerlines.

    Args:
        surface: Surface mesh of vascular geometry.
        centerlines: Centerlines corresponding to surface.

    Returns:
        Surface with DistanceToCenterlines as pointdata.

    """
    distance = vmtkscripts.vmtkDistanceToCenterlines()
    distance.Surface = surface
    distance.Centerlines = centerlines
    distance.RadiusArrayName = 'MaximumInscribedSphereRadius'
    distance.Execute()
    return distance.Surface

def vmtkflowextensions(surface, interactive=1, extensionlength=10,
                       transitionratio=.25):
    """Extrude inlets and outlets of a vascular geometry.

    Args:
        surface: Surface mesh of vascular geometry.
        interactive (bool): Choose inlets/outlets to be extruded.
        extensionlength: Length of extrusions.
        transitionratio: Rate of transition from model section to circular
        section.

    Returns:
        Surface with extruded inlets/outlets.

    """
    extender = vmtkscripts.vmtkFlowExtensions()
    extender.Surface = surface
    extender.ExtensionMode = 'boundarynormal'
    extender.TransitionRatio = transitionratio
    extender.Interactive = interactive
    extender.ExtensionLength = extensionlength
    extender.Execute()
    return extender.Surface

def vmtkicpregistration(surface, referencesurface):
    """Register a surface to a reference surface using the interative closest
    point algorithm.

    Args:
        surface = Surface mesh.
        referencesurface = Reference surface mesh.

    Returns:
        'surface' rigidly transformed to best match 'referencesurface'.
        Pointdata:
            Distance: Distance from 'surface' to 'referencesurface'.

    """
    registration = vmtkscripts.vmtkICPRegistration()
    registration.Surface = surface
    registration.ReferenceSurface = referencesurface
    registration.DistanceArrayName = 'Distance'
    registration.Execute()
    return registration.Surface

def vmtkimagereader(path):
    """Read an image and store it in a vtkImageData object.

    Args:
        path: Path to the image file.

    Returns:
        vtkImageData object.

    Note:
        Reads several image formats: vti, vtk, dcm, raw, mha, mhd, tif, png

    """
    reader = vmtkscripts.vmtkImageReader()
    reader.InputFileName = path
    reader.Execute()
    return reader.Image

def vmtkimagewriter(image, path):
    """Write a vtkImageData object to disk.

    Args:
        image: vtkImageData object.
        path: Path to the image file.

    Returns:
        n/a

    Note:
        Writes several image formats: vti, vtk, mha, mhd, tif, png, dat

    """
    writer = vmtkscripts.vmtkImageWriter()
    writer.Image = image
    writer.OutputFileName = path
    writer.Execute()

def vmtkmarchingcubes(image, level=0.0):
    """Generate an isosurface of given level from a 3D image.

    Args:
        image: vtkImageData object.
        level: Graylevel at which to generate the isosurface.

    Returns:
        Surface mesh of the isosurface.

    """
    marcher = vmtkscripts.vmtkMarchingCubes()
    marcher.Image = image
    marcher.Level = level
    marcher.Execute()
    return marcher.Surface

def vmtkmeshreader(path):
    """Read a mesh and store it in a vtkUnstructuredGrid object.

    Args:
        path: Path to the mesh file.

    Returns:
        vtkUnstructuredGrid object.

    Note:
        Reads several mesh formats: vtu, vtk, FDNEUT, xda, neu (ngneut),
        gneu (gambit), tec (tecplot), node (tetgen), ele (tetgen)

    """
    reader = vmtkscripts.vmtkMeshReader()
    reader.InputFileName = path
    reader.Execute()
    return reader.Mesh

def vmtkmeshtosurface(mesh, cleanoutput=1):
    """Convert a mesh to a surface by throwing out volume elements and (optionally) the relative points

    Args:
        mesh: Volumetric mesh.
        cleanoutput (bool): Remove unused points.

    Returns:
        vtkPolyData object.

    """
    extractor = vmtkscripts.vmtkMeshToSurface()
    extractor.Mesh = mesh
    extractor.CleanOutput = cleanoutput
    extractor.Execute()
    return extractor.Surface

def vmtkmeshvectorfromcomponents(mesh, vectorname='Velocity',
                                 componentsnames=['VelocityX', 'VelocityY',
                                 'VelocityZ'], removecomponents=False):
    """Create a vector array from a number of scalar arrays treated as vector
    components.

    Args:
        mesh: vtkUnstructuredGrid object.
        vectorname: Name to give to the vector array that will be created.
        componentsnames: List of names of the three scalar arrays that will be
            used as vector components.
        removecomponents (bool): Remove the scalar arrays after creating the
            vector array.

    Returns:
        vtkUnstructuredGrid object with vector array.

    """
    vectorer = vmtkscripts.vmtkMeshVectorFromComponents()
    vectorer.Mesh = mesh
    vectorer.VectorArrayName = vectorname
    vectorer.ComponentsArrayNames = componentsnames
    vectorer.RemoveComponentArrays = removecomponents
    vectorer.Execute()
    return vectorer.Mesh

def vmtkmeshwallshearrate(mesh, velocityarrayname='vel'):
    """Compute wall shear rate from a velocity field

    Args:
        mesh: vtkUnstructuredGrid object.
        velocityarrayname: Name of velocity array.

    Returns:
        vtkPolyData object with the surface of the mesh with the newly
        created array named WallShearRate.

    Note:
        To obtain the wall shear stress, multiply WallShearRate by the
        viscosity.

    """
    wsrfilter = vmtkscripts.vmtkMeshWallShearRate()
    wsrfilter.Mesh = mesh
    wsrfilter.VelocityArrayName = velocityarrayname
    wsrfilter.WallShearRateArrayName = 'wsr'
    wsrfilter.Execute()
    return wsrfilter.Surface

def vmtkmeshwriter(mesh, path):
    """Write a vtkUnstructuredGrid object to disk.

    Args:
        image: vtkUnstructuredGrid object.
        path: Path to the mesh file.

    Returns:
        n/a

    Note:
        Writes several mesh formats: vtu, vtk, xda, FDNEUT, lifev, xml
        (dolfin), msh (fluent), tec (tecplot), node (tetgen), ele (tetgen), dat

    """
    writer = vmtkscripts.vmtkMeshWriter()
    writer.Mesh = mesh
    writer.OutputFileName = path
    writer.Execute()

def vmtknetworkextraction(surface):
    """Extract a network of approximated centerlines from a surface.

    Args:
        surface: Surface mesh of vascular network.

    Returns:
        Network of centerlines.

    Note:
        The surface must have at least one opening.

    """
    extractor = vmtkscripts.vmtkNetworkExtraction()
    extractor.Surface = surface
    extractor.Execute()
    return extractor.Network

def vmtkpolyballmodeller(voronoi, size=[64, 64, 64]):
    """Converts a polyball to an image containing the tube function.

    Args:
        voronoi: Voronoi diagram.
        size: Image dimensions.

    Returns:
        Signed distance transform image, with the zero level set being the lumen
        surface represented by the Voronoi diagram.

    Note:
        The Voronoi diagram represents the lumen volume as a set of overlapping
        spheres (also named 'polyball'): the largest spheres correspond to the
        local minimum lumen diameter, the smallest spheres correspond to finer
        details on the surface.

    """
    modeller = vmtkscripts.vmtkPolyBallModeller()
    modeller.Surface = voronoi
    modeller.RadiusArrayName = 'MaximumInscribedSphereRadius'
    modeller.SampleDimensions = size
    modeller.Execute()
    return modeller.Image

def vmtkpointsplitextractor(centerlines, splitpoint, gap=1.0):
    """Split centerlines at specified location.

    Args:
        centerlines: Centerlines.
        splitpoint: Location where to split the centerlines.
        gap: Length of 'Blanking=1' part of the centerlines.

    Returns
        Centerlines split at splitpoint, with the center of the gap at the
        splitpoint. The output is similar to the output of
        vmtkbranchextractor.
        Celldata (selection):
            CenterlineId: Cellid of centerline from which the tract was split.
            TractId: Id identifying each tract along one centerline.
            GroupId: Id of the group to which the tract belongs.
            Blanking: Boolean indicating whether tract belongs to bifurcation.

    """
    extractor = vmtkscripts.vmtkPointSplitExtractor()
    extractor.Centerlines = centerlines
    extractor.RadiusArrayName = 'MaximumInscribedSphereRadius'
    extractor.GroupIdsArrayName = 'GroupIds'
    extractor.SplitPoint = splitpoint
    extractor.Execute()
    return extractor.Centerlines

def vmtksurfacecapper(surface):
    """Caps the holes of a surface.

    Args:
        surface: Surface mesh of vascular geometry with holes at inlets and
            outlets.

    Returns:
        Surface mesh with capped holes. Each cap has an ID assigned for easy
        specification of boundary conditions.
        Celldata:
            CellEntityIds: ID assigned to caps.

    """
    capper = vmtkscripts.vmtkSurfaceCapper()
    capper.Surface = surface
    capper.Method = 'centerpoint'
    capper.Interactive = 0
    capper.Execute()
    return capper.Surface

def vmtksurfacecenterlineprojection(surface, centerlines):
    """Project pointdata from centerlines to a surface.

    Args:
        surface: Surface mesh of vascular geometry.
        centerlines: Centerlines corresponding to surface.

    Returns:
        Surface mesh with centerlines pointdata projected onto it.

    """
    projection = vmtkscripts.vmtkSurfaceCenterlineProjection()
    projection.Surface = surface
    projection.Centerlines = centerlines
    projection.RadiusArrayName = 'MaximumInscribedSphereRadius'
    projection.Execute()
    return projection.Surface

def vmtksurfacecurvature(surface, curvature_type='mean', absolute_curvature=0,
                         median_filtering=0):
    """Compute curvature of an input surface.

    Args:
        surface: Surface mesh.
        curvature_type ('mean', 'gaussian', 'maximum', 'minimum'): Type of
            curvature to compute.
        absolute_curvature (bool): Output the absolute value of curvature.
        median_filtering (bool): Output curvature after median filtering to
            suppress numerical noise speckles.

    Returns:
        Surface with curvature variable.
        Pointdata:
            Curvature: Local surface curvature.

    """
    curvaturefilter = vmtkscripts.vmtkSurfaceCurvature()
    curvaturefilter.Surface = surface
    curvaturefilter.CurvatureType = curvature_type
    curvaturefilter.AbsoluteCurvature = absolute_curvature
    curvaturefilter.MedianFiltering = median_filtering
    curvaturefilter.Execute()
    return curvaturefilter.Surface

def vmtksurfacedecimation(surface, target=.9):
    """Reduce the number of triangles in a surface.

    Args:
        surface: Surface mesh.
        target: Desired number of triangles relative to the input number of
            triangles.

    Returns:
        Surface mesh with fewer triangles.

    """
    decimator = vmtkscripts.vmtkSurfaceDecimation()
    decimator.Surface = surface
    decimator.TargetReduction = target
    decimator.Execute()
    return decimator.Surface

def vmtksurfacedistance(surface, referencesurface,
                        distance_arrayname='distance',
                        distancevector_arrayname='distance_vector',
                        signeddistance_arrayname='signed_distance'):
    """Compute the pointwise minimum distance from a surface to a reference
    surface.

    Args:
        surface: Surface mesh.
        referencesurface: Reference surface mesh.

    Returns:
        'surface' with 'Distance' pointdata.

    """
    distancer = vmtkscripts.vmtkSurfaceDistance()
    distancer.Surface = surface
    distancer.ReferenceSurface = referencesurface
    distancer.DistanceArrayName = distance_arrayname
    distancer.DistanceVectorsArrayName = distancevector_arrayname
    distancer.SignedDistanceArrayName = signeddistance_arrayname
    distancer.Execute()
    return distancer.Surface

def vmtksurfacenormals(surface):
    """Compute normals to a surface.

    Args:
        surface: Surface mesh.

    Returns:
        Surface mesh with 'Normals' vector pointdata.

    """
    normaller = vmtkscripts.vmtkSurfaceNormals()
    normaller.Surface = surface
    normaller.Execute()
    return normaller.Surface

def vmtksurfaceprojection(surface, referencesurface):
    """Interpolates the pointdata of a reference surface onto a surface based
    on minimum distance criterion.

    Args:
        surface: Surface mesh.
        referencesurface: Reference surface mesh.

    Returns:
        'surface' with projected pointdata from 'referencesurface'.

    """
    projector = vmtkscripts.vmtkSurfaceProjection()
    projector.Surface = surface
    projector.ReferenceSurface = referencesurface
    projector.Execute()
    return projector.Surface

def vmtksurfacereader(path):
    """Read a polydata (surface or centerline) and store it in a vtkPolyData
    object.

    Args:
        path: Path to the polydata file.

    Returns:
        vtkPolyData object.

    Note:
        Reads several polydata formats: vtp, vtk, stl, ply, tec (tecplot),
        dat (tecplot)

    """

    reader = vmtkscripts.vmtkSurfaceReader()
    reader.InputFileName = path
    reader.Execute()
    return reader.Surface

def vmtksurfaceremeshing(surface, edgelength=1.0, iterations=10):
    """Remesh a surface using high quality triangles.

    Args:
        surface: Surface mesh.
        edgelength: Target length of triangle edges.
        iterations: Number of iterations to optimize the mesh quality.

    Returns:
        Remeshed surface.

    """
    remesher = vmtkscripts.vmtkSurfaceRemeshing()
    remesher.Surface = surface
    remesher.NumberOfIterations = iterations
    remesher.ElementSizeMode = 'edgelength'
    remesher.TargetEdgeLength = edgelength
    remesher.Execute()
    return remesher.Surface

def vmtksurfacescaling(polydata, scalefactor):
    """Scale a polydata by an isotropic factor.

    Args:
        polydata: Surface mesh or centerlines.
        scalefactor: Scaling factor.

    Returns:
        Scaled polydata.

    """
    scaler = vmtkscripts.vmtkSurfaceScaling()
    scaler.Surface = polydata
    scaler.ScaleFactor = scalefactor
    scaler.Execute()
    return scaler.Surface

def vmtksurfacesmoothing(surface, iterations=100, method='taubin'):
    """Smooth a surface.

    Args:
        surface: Surface mesh.
        iterations: Number of smoothing iterations.
        method ('taubin', 'laplace'): Taubin's volume-preserving or a Laplacian
            smoothing filter.

    Returns:
        Smoothed surface.

    """
    smoother = vmtkscripts.vmtkSurfaceSmoothing()
    smoother.Surface = surface
    smoother.Method = method
    smoother.NumberOfIterations = iterations
    smoother.PassBand = 0.1
    smoother.Execute()
    return smoother.Surface

def vmtksurfacesubdivision(surface, numberofsubdivisions=1, method='linear'):
    """Subdivide a triangulated surface.

    Args:
        surface: Surface mesh.
        numberofsubdivisions: Number of subdivisions.
        method ('linear', 'butterfly', 'loop'): Subdivision method.

    Returns:
        Subdivided surface mesh.

    """
    divider = vmtkscripts.vmtkSurfaceSubdivision()
    divider.Surface = surface
    divider.NumberOfSubdivisions = numberofsubdivisions
    divider.Method = method
    divider.Execute()
    return divider.Surface

def vmtksurfacewriter(polydata, path):
    """Write a vtkPolyData object (e.g. surface and centerlines) to disk.

    Args:
        polydata: vtkPolyData object.
        path: Path to the polydata file.

    Returns:
        n/a

    Note:
        Writes several polydata formats: vtp, vtk, stl (use only for
        triangulated surface meshes), ply, tec (tecplot), dat

    """
    writer = vmtkscripts.vmtkSurfaceWriter()
    writer.Surface = polydata
    writer.OutputFileName = path
    writer.Execute()


Chicken salad basically consists of salad which has chicken in it; this means that you have a wide array of salads to choose from when making a chicken salad, yay!
Although this is good news don't forget that you also have to consider palatability because believe it or not, some salads might not just taste right with chicken in it and then the type of chicken you use also plays a determinant factor.
There are ways to make chicken salad that puts the chicken at the "centre stage" so to speak amongst the other ingredients because just as there are many ingredients to use, there are some that should be used in lower proportions than others.
So let's see some recipes you can play with for the perfect chicken salad and pairs for them too.
The beauty of making a chicken salad is that you can make it as rich as you want with a selection of perfectly combinable vegetables and this recipe by Simply Whisked is a typical example of fine vegetable fusion.
The inclusion of cilantro in the salad gives the dish a little-heightened taste, and I do know it's not always a spice welcomed with open arms so using it in little quantity should be best depending on who you are serving especially if it's meant for a gathering.
So tortilla chips in salad…hmmm, of course! Use this recipe by Peas And Crayons for a top notch buffalo chicken taco salad that you will enjoy.
The combination of the tacos with the other vegetables gives a colour burst that makes you want to eat heartily, and that's a good sign for any salad.
This recipe also made use of a hot spice, and if you do not have the Frank Red's hot you can use any other store bought or home made one you have, the importance is in the flavour and the amount of heated up spiciness you want in your food at the end of the day.
For this recipe, any kind of chicken goes be it leftovers or freshly made!
This is another chicken salad recipe that uses ingredients that are not only low in fat but are a bit different from the usual, what am I talking about exactly? Culantro! Not an everyday ingredient you stuck up in your shelves and not the same as cilantro but definitely a useful herb that has its own flavour and benefits.
The use of avocado instead of mayo in this Mexican chicken salad by Abbey's Kitchen makes this salad you can try any time of the day.
The serving pattern of the salad in the avocado backs is also very innovative, perfect for a party or get together with friends and family.
You can serve your chicken salad with some brown rice and depending on how your salad is; you can choose a very well garnished brown rice or a lightly made one.
For the context of today's discussion, let's go for a lightly papered simple brown rice with this recipe by The Honor System.
Usually, the most encountered problem with cooking brown rice is the gummy-ness which could also result in the rice getting burnt.
Don't get me wrong, I have seen some recipes that use the gummy rice to their advantage and make a swell dish out of it but not this one, so if you don't want all that starch gum, this recipe is more than perfect.
If you follow the very simple instructions, what you get is a tastily cooked brown rice that is perfect for chicken salad.
Serving your chicken salad with bread is another nice way to pair it and rather than buying some, take it upon yourself to make some sourdough bread with this recipe by Lively Table.
Making bread from scratch always seems like so much work especially if you are one that's not always up for baking but you know what? It's good to pull a surprise to yourself every once in a while.
Thankfully, the recipe comes with a picture explanation of how to go about it from mixing with the starter all the way down to the final baking.
To go cool with a fruity side, try some roasted beets, yes you could boil your beets but mehnn! Roasting gives it a heightened sweetness that you didn't know beets could have, try this recipe by Happy Healthy Mama for some roasted beets.
If you are up for herbs and seasoning, sprinkle some dried thyme and pepper, this will come out in the aroma and flavour of the beets when you are all done.
For all the mayo and cream you put in a chicken salad, simple vegetables as side dishes are always best except you want to go heavy or have an overly desire to eat or serve something more filling.
When making a chicken salad, work with taste, what you feel wouldn't taste right together with your chicken just might not taste right!
So you should be a better judge of what combinations will make for a perfect chicken salad.
That being said, there is an impressive selection of chicken salad recipes packed in this cookbook by Laura Sommers, about 53 of them! With this, you can't run out of ideas.


No description for Stinger Trail trail has been added yet! Submit one here.
At the end of stinger, now have to peddle hard get up a leafy hill.
not enough ppl ride this trail segment.
no photos have been added for Stinger Trail yet, add a photo.
no videos have been added for Stinger Trail yet, add a video.


The Taj Garage: What's the one after entree called?
So this morning I got stuck into laying the second course, expecting this one to fly by but .. it doesn't matter how careful you are and how many times you check the level, something always stuffs up. Quite a few blocks in the first course had shifted ever-so-slightly (probably when I set the block next to them) so I ended up adjusting the level and position of the second course tirelessly.. it probably took between 5 and 10 minutes to lay each block by the time I cleaned the beds of debris, placed the block, checked the level, tweaked the level with plastic wedges, checked again, adjusted the block next to it, checked again, etc etc.
I also used up my stock of N12 rebar to place and wire most of the extended vertical stems. I'm not looking forward to having to heft the blocks 2m into the sky and over these bars next week though… gym? Who needs a gym?
Simon, Have you used the compressor in the picture? How did it hold up with one rammer?


DOGS/CATS: Under 20 lbs/10 kg, 5 drops; 21-60 lbs/ 10-30 kg, 10 drops; 61-100 lbs/ 30-45 kg, 15 drops; over 100 lbs/45 kg, 20 drops.
In acute cases (those with sudden onset), the doses can be given every 15 minutes, up to 4 doses.
For cases that are not acute (chronic, long term problems), one dose 3 times daily.
SMALL MAMMALS: Rabbits, ferrets, hamsters and pot bellied pigs can be dosed by weight as for cats and dogs in previous section.
For severe cases a drop can be diluted in 1 ml of water or other oral rehydration fluid and given to the patient orally, taking care to avoid aspiration of the fluid into the respiratory tract by the patient. 3 doses whose volume is appropriate to the size of the patient should be given from the diluted product over a 24 hour period, e.g. 2 drops for a mouse or small budgie, 4 drops for a large guinea pig. For acute cases it can be repeated as for cats and dogs in previous dosing section.


For Honor has surpassed 15 million global players, Marching Fire launches next week | PowerUp!
Ubisoft has a lot to celebrate regarding For Honor. Not only does the Marching Fire Expansion launch next week, but For Honor has now surpassed 15 million players. Since it's launch, For Honor has steadily grown with Ubisoft updating the game regularly.
In addition to new Heroes, weapons and the special training mode, For Honor also moved to dedicated servers to provide a better experience overall.
Warriors fight together and this is exemplified by the ever-growing For Honor community of players worldwide.
Over the last year, we have worked tirelessly to do right by our community as we continue to build and expand the world of For Honor, and it is the community's passion that has ensured that we have been able to stay the course.
On behalf of the entire team, we would like to thank the 15 million warriors that have taken up arms and joined us on the battlefield. We are deeply honored to have reached this milestone, and we will continue to support For Honor so that more may enjoy what we've built so far.
Coming on October 16, For Honor players will get to experience Marching Fire. The expansion includes four new Wu Lin heroes, 4v4 breach mode and remastered visuals. Anyone who purchases Marching Fire will receive two weeks early access to the Wu Lin heroes and the new PvE Arcade mode.
In the new mode, players will tackle randomly generated combat scenarios which will grant rewards and help level up their weapons.
To get an early look at Marching Fire, fans can tune into For Honor's Twitch stream at 3 pm AEDT, Friday, October 12 2018.


The service will provide Independent Mental Capacity Advocates where there is no-one to consult about the person's best interests.
Velindre NHS Trust on behalf of Cardiff and Vale, Aneurin Bevan and Cwm Taf University Health Boards are inviting suitably qualified organisations to express an interest for provision of an Independent Mental Capacity Advocacy Service (IMCA).
The purpose of the IMCA service is to help particularly vulnerable people who lack the capacity to make important decisions about serious medical treatment and changes of accommodation. It is available to those who have no family or friends whom it would be appropriate to consult about these decisions. The service includes adult protection cases (POVAs) and care reviews. IMCA also has a role in the Deprivation of Liberty Safeguards (DOLs) process. An IMCA may be instructed by the Supervisory Body to support a person for whom an authorisation is being sought; or to undertake the role of the Relevant Person's Representative, or to provide assistance to the relevant person and their representative in exercising their rights under the legislation.
The service will be provided across the boundaries of the Cardiff and Vale, Cwm Taf and Aneurin Bevan University Health Boards.
At commencement of this contract, the geographical area of Bridgend County Borough Council will transfer to the Cwm Taf University Health Board from Abertawe Bro Morgannwg University Health Board. Further details can be found in the Invitation to Tender document.
The service will provide Independent Mental Capacity Advocates where there is no-one to consult about the person's best interests, who are instructed to support and represent a person over 16 years of age who lacks capacity to make certain serious decisions and may include people with dementia, brain injury, learning disability, mental health issues, a stroke, or who are unconscious or in a coma. The IMCA's role is to make representations about that person's wishes, feelings, beliefs and values, at the same time as bringing to the attention of the decision-maker all factors that are relevant to the decision. This will include supporting the person who lacks capacity; obtaining and evaluating information; as far as possible ascertaining the person's wishes and feelings, beliefs and values; obtaining a further medical opinion if necessary and ascertaining alternative courses of action. The IMCA will represent the person's views and interests and prepare a report for the decision-maker. The IMCA will also be able to challenge the decision-maker.
The initial term of the contract will be for 3 years with an option to extend at the sole discretion of the contracting Authority for 2 further periods each of 1 year.
The following Local Authorities will be able to 'call off' the contract; Rhondda Cynon Taf, Merthyr Tydfil, Cardiff, Vale of Glamorgan, Monmouthshire, Newport, Blaenau Gwent, Torfaen, Caerphilly and Bridgend.
Supplier's will be required to enter into terms and conditions of contract as set out in the ITT, save for matters of clarification or consistency the terms are non-negotiable.
NWSSP reserves the right to request a parent company and/or other guarantees of financial liability.
The services to which this notice relates fall within Regulation 74, Section 7, Chapter 3, Part 2 of the Public Contracts Regulations 2015 (Regulations). Although the Contracting Authority may voluntarily adopt certain provisions in the Regulations for the purposes of, inter alia, applying selection criteria at PQQ stage, neither the publication of this voluntary notice nor the employment of any particular terminology nor any other indication shall be taken to mean that the Contracting Authority (or any of the NHS Wales bodies on whose behalf it is acting) intend to hold themselves bound by any of the Regulations save those applicable to "Light Touch" services.
The Contracting Authority will not accept completed PQQ's after the stated closing date.
The Contracting Authority reserves the right to conclude the contract in whole, in part or annul the tendering process.
Register / login to the portal and click "PQQs open to all suppliers". Find the pqq_number and title and click on the "express interest" button. This will move the PQQ/ITT into your "my PQQ" page.
To access attachments click "buyer attachments" in the "PQQ details".
To respond click "my response" under "PQQ details". Then "create response" or "decline to respond". You can use the "messages" function.
To communicate with the buyer and seek any clarification. Submit your tender using the "submit response" button.


Developing countries and other stakeholders are expressing concerns on two issues in particular as talks in Nairobi push forward the Habitat III process: broadening participation in that process and figuring out how to finance new, still-to-be-developed strategies around urban development.
The first "PrepCom", which took place last fall in New York, was largely focused on technical planning. But the Nairobi meetings are offering an early opportunity for all delegates to substantively engage with the Habitat III agenda — and to study each other's positioning.
kerp up the good work!


HTTPS performance has been made faster and safer for every user and every device.
Transportation Layer Security (TLS) 1.3 protocol provides unparalleled privacy and performance compared to previous versions of TLS and non-secure HTTP. Working with the IETF, Cloudflare engineers have been active contributors to the development of the latest TLS protocol.
Cloudflare is the first to offer TLS 1.3 support on a global scale which reduces latency, optimizes performance and hardens the security of your encrypted connections. As we continue to innovate encryption technologies, Cloudflare's commitment to building a safer and faster web includes influencing the rapid adoption of TLS 1.3 in all modern browsers.
Performance has a major impact on user experience. TLS 1.3 represents a pivotal turning point for HTTPS performance.
Modern mobile networks will routinely add over 100ms of latency to each request. TLS 1.3 makes page load times significantly faster for mobile devices, improving the user experience for your visitors.
Utilizing Cloudflare's global content delivery decreases the physical distance between your content and your visitors resulting in shorter physical round trip connection times (latency). The combination of reduced round trip connections and shorter distance results in enormous performance gains when establishing a secure connection.
The new security protocol reduces latency caused during the TLS Handshake by removing a whole round-trip connection for session establishment.
Data integrity is critical to your entire community. TLS 1.3 represents a significant leap forward for security. TLS 1.3 removes all primitives and features that have contribute to a weak configurations and enabled common vulnerability exploits like DROWN, Vaudenay, Lucky 13, POODLE, SLOTH, CRIME and more. TLS 1.3 has also introduced more improvements than any previous version of the protocol. Additional features have been added to enhance the security and robustness of the protocol.
TLS 1.3 is available on all plan levels. For Free and Pro customers, TLS 1.3 will be turned on by default. Business and Enterprise customers will have the option to opt-in. For clients that do not yet support TLS 1.3, fallback options will be available to utilize the most secure encryption protocol available to the client.
In addition to TLS 1.3, secure connections running through Cloudflare benefit from performance enhancing features like a global content delivery network, HTTP/2 and Server Push. Cloudflare also provides additional layers of security that include protection against distributed denial-of-service attacks (DDoS), web-application firewall protection again malicious attacks like SQL injections, comment spam, excessive bot crawling, and much more.
Cloudflare is the first to offer TLS 1.3 support on a global scale. TLS 1.3 has removed common vulnerabilities within the protocol strengthening overall security. An abbreviated TLS/SSL handshake and 0-RRT session resumption have greatly reduces latency resulting a giant leap forward in performance. Cloudflare's global network significantly reduces latency by terminating the user's connection to a nearby server eliminating the need for the request to travel across oceans and continental.
The secure web is now more performance oriented than any other previous version and non-secure HTTP. Enhance the confidentiality, integrity, and availability of your content by signing up for Cloudflare today.


text:
Trimarco v. Klein Ct. of App. of N.Y., 56 N.Y.2d 98, 436 N.E.2d 502 (1982) is a 1982 decision by the New York Court of Appeals dealing with the use of custom in determining whether a person acted reasonably given the situation. It is commonly studied in introductory U.S. tort law classes.

Facts

Trimarco (P) appealed an order which reversed  a judgment in favor of P and dismissed P's complaint in a negligence action for personal injuries.

P was severely injured when he fell through the glass door enclosing his tub in his apartment he was renting. It was not possible for P or his wife to determine if the glass was tempered or just ordinary glass. After the accident, the glass was found to be just ordinary glass. P sued Klein (D), his landlord, for the injuries. At trial, P introduced expert evidence about the custom and usage of tempered glass from 1956 to 1976. Since at least the early 1950s, a practice of using shatterproof glazing materials for bathroom enclosures had come into common use, so that by 1976 the glass door here no longer conformed to accepted safety standards.  P also showed that over this period bulletins of nationally recognized safety and consumer organizations along with official Federal publications had joined in warning of the dangers that lurked when plain glass was utilized in "hazardous locations", including "bathtub enclosures". Over objection, the trial court also allowed in sections of New York's General Business Law, which, as of July 1, 1973, required, on pain of criminal sanctions, that only "safety glazing material" be used in all bathroom enclosures. D's managing agent admitted that, since at least 1965, it was customary for landlords who had occasion to install glass for shower enclosures, to replace the glass with "some material such as plastic or safety glass". P was given the verdict by the jury. The appellate division reversed the decision awarding P damages; D was under no common law duty to replace the glass unless he had prior notice of the danger. P appealed. The Court of Appeals reversed and ordered a new trial.

Judgment
The question asked was, does custom and usage per se fix the scope of the reasonable person standard?
The response of the court was, custom and usage is highly relevant evidence related to the reasonable person standard but it does not per se define the scope of negligence.

Judge Jacob D. Fuchsberg gave the following decision.

Legal analysis
Custom and usage evidence is highly relevant to a determination of whether an actor used reasonable care under the circumstances. Such evidence tends to show that taking the omitted precaution that resulted in harm was technologically and economically feasible and that the harm itself was foreseeable. Custom and usage evidence is not treated as negligence per se: the jury or fact finder must still determine if the custom and usage is reasonable. Thus, custom and usage are merely evidence of what ought to be done (often highly persuasive evidence), but evidence of custom and usage must still be reconciled with the reasonable person standard. Custom and usage are not conclusive evidence of negligence.

See also
US tort law
T.J.Hooper, 60 F.2d 737 (2d Cir. 1932) (opinion by Judge Learned Hand).

External links

United States tort case law
New York (state) state case law
1982 in United States case law
1982 in New York (state)

redpajama_set_name: RedPajamaWikipedia


text:
Alaska Airlines could be flying on biofuel by 2018
Alaska Airlines is to buy biojet fuel for its aircraft from Hawai'i BioEnergy, a consortium of three of Hawaii's largest landowners and three venture capital firms, after the two companies signed an agreement.
The material used to produce the renewable aviation fuel is likely to be woody biomass and will comply with the Roundtable for Sustainable Biofuels' criteria.
Alaska Airlines is Hawai'i BioEnergy's second customer, and the first to sign a contract. Hawaiian Electric previously announced it agreed to purchase 10 million gallons of fuel annually for power production.
The air carrier has lowered its carbon footprint by 30% since 2004. It could be powering its Hawaii flights on bio-based jet fuel by 2018 as Hawai'i BioEnergy says it will ramp up production of the sustainable fuels within five years of regulatory approval.
'The development and commercialisation of local, renewable energy is of critical importance to Hawaii, given the state imports 95% of its energy needs,' says Joel Matsunaga, executive VP and CEO of Hawai'i BioEnergy. 'Use of locally grown feedstocks for biofuel production will improve Hawaii's energy sustainability and security while creating jobs in our communities.'

redpajama_set_name: RedPajamaCommonCrawl


Happy Mother`s Day Vector Flower SVG is a unique lovely and positive lettering phrases, floral elements, beautiful greeting cards and geometric frames help to express your love and appreciation to mothers.
This product help you create a beautiful greeting cards, wonderful invitations, dashboards and stickers for Mother`s Day. It`s includes vector and rastes phrases: World`s Best Mom, Happy Mother`s Day, Super Mom, Best Mom, Best Mom Ever, Wife Mom Boss, I love Mom, You`re an amazing Mom. Floral elements included watercolor elements: flowers, leaves, bouquets and wreath.
Phrases isolated from background in EPS, AI, SVG and PNG format.
Positive greeting calligraphy vintage handwriting quotes perfect for T-shirt, photo overlays, print on a mug, greeting cards, gift tags, dashboards and stickers, art prints and posters, packages, on a pillow, on a packages and other souvenir items, logo, web and blog designs, scrapbooking, Pinterest, Instagram, for other social media, online shops!
this is a digital download quotes in AI, EPS, SVG, PNG format. No physical product will be mailed to you.
– 6 Mother`s Day gold frames (AI, EPS, SVG, PNG).
Currently this product is available for just $1 (normal price $9.00). For a limited time only. View all discount deals.


NBA All Star Weekend will take place here in Toronto from Thursday, February 11th 2016 until Sunday, February 14th 2016. All Star Weekend is a weekend festival held every February during the middle of the NBA regular season and consists of a variety of basketball events, exhibitions and performances culminating in the NBA All Star Game.
In February 2016, for the first time ever the NBA All Star Weekend will take place outside of the United States and will be hosted here in Toronto, Ontario. The best part about it? This 4 day long event promises to bring a ton of exciting nightlife and epic NBA after parties to our hometown of Toronto! The Annual 2 Kings dinner hosted by Jay Z and Lebron James will feature Toronto's very own Drake and is rumoured to take place at Sher Club, Drake's exclusive new members only club inside the Air Canada Centre. Expect plenty of All Star after parties and celebrity hosted events at various Toronto nightclubs, lounges and bars. More details on all the All Star events will be released in the coming months. If you're planning on visiting Toronto during All Star weekend we advise you to plan your accommodations well in advance. A large number of tourists are expected to visit Toronto for this event and the majority of Toronto hotels have already sold out or began increasing their prices. Although all the excitement and celebrity spottings may come with a hefty price tag for any out of towners looking to stay in the city over the weekend, we promise it will all be worth it! All Star Weekend promises to be one of the most exciting weekends for Toronto in 2016!
Maybe you plan on spending the weekend out and about at one of Toronto's top nightclubs or lounges or maybe you plan on attending some of the official NBA Events & Games, like the All Day Dunk-a-thon, Statefarm's special All-Star Saturday Night event, or the Sprint NBA All-Star Challenge. However you choose to spent Toronto's first All-Star Weekend, we advise that you purchase tickets early on as they will sell out quickly!
For further information on the NBA All Star 2016 Toronto Weekend, please visit the official All Star Weekend 2016 site by clicking here.


For more than twenty years Dunfermline Advocacy has been providing support to people who have learning disabilities. From October 2013 we will be extending our remit so that Citizen Advocacy support is available to a wider range of vulnerable people across West Fife.
Most of our Advocacy Partners are referred to us either by a social worker, care worker or health professional. We operate an open referral system and will accept a request for support from anyone – including the person who needs the support themselves.
If you think you or someone you know could benefit from Citizen Advocacy then get in touch for an informal discussion about how we can help.


text:
Changing attitudes to road fatalities
April 28, 2015 by tejvan
Following up from Road fatalities in the UK this post looks at fatality rates going back to the 1920s.
Reading a book – the History of Time trialling by Peter Whitfield I was struck by some statistics about the level of road fatalities, during the 1930s and 1940s.
Despite road traffic being only 10% of today's levels. Road deaths reached nearly 10,000 a year. There were up to 1,000 road fatalities a year of children under 10.
Yet, despite these shocking statistics, there was a widespread acceptance of these deaths. Nearly all road fatalities were put down as 'accidents'. It is quite a shock to learn that during the Second World War – 50,000 people were killed on British roads (Source: Time, Speed and Truth, P.Whitfield) – This was a greater number of fatalities than the blitz (where 40,000 civilians were killed in air raids)
Reasons for high death rate
Blackout during the second world war – cars not allowed to use headlights. In September 1939, there were 1,130 deaths in that month alone, 148 who were cyclists. This was not helped by court judgements during the second world war, which stated if cyclists were hit during a blackout, there were responsible because they failed to look behind them!
No driving test. The driving test was only introduced in 1935, but even then – if you were already driving you didn't have to take a test.
Very few road markings. No white lines, or cateyes.
A general acceptance these fatalities were just accidents. It's strange that a train accident will make front page news, but car accidents (perhaps because they are so common, never make big news)
No real attempt to do anything about it. There were more pressing concerns like Mr Hitler across the channel.
Motorists were very rarely held accountable. In rare cases which did come to court, judges would often dismiss the challenge. The court often asked the motorist if they beeped their horn. If they beeped the horn then all the blame must be on pedestrian / cyclist for failing to get out of the way.
In 1925, Temple Press published a 'Safety hints for motorists' which amongst other gems of wisdom, they advised
safety hints from 1924
Always keep your eyes open
It's considered discourteous to take a corner on the wrong side of the road
(although painfully obvious, still good advice today!)
Implications of these attitudes
There was a strong feeling that roads were for cars, and other road users were just a nuisance. In 1924 the Metropolitan Police Commissioner advised cyclists to avoid London, on the grounds that 150 cyclists were killed cycling in London every year. There was no attempt to make driving safer or look at infrastructure to help cyclists. The simplest solution was just to discourage cycling. Is it any wonder, cycling in London fell so dramatically? Nearly 100 years later, we're still trying to change this deeply engrained view that it would 'all be easier without cyclists on the road'.
Road deaths fell from the 1930s, but it was also at the cost of making many roads – virtual no go areas for pedestrians and cyclists. In the 1930s, it would have been common for children to play in the road, cycle to school. That is rare now.
Blame was rarely apportioned. It's a strange human psychology. But, if people die in a train accident or plane accident, someone is blamed and we are not satisfied until stringent steps have been taken to make train travel, aeroplane travel safer. However, when there is a fatality on the road, we tend to just shrug our shoulders and say it is an accident. If a train crash is caused by excess speed, you can guarantee the next day, speed limits are in place. If there is a fatality on the roads due to excess speed, you can guarantee the next day, nothing will have changed.
These were extreme attitudes of laissez faire to road safety. Things have changed for the better. The number of road deaths has steadily fallen – whilst the number of cars on the roads increase. But, road fatalities are still one of biggest causes of deaths of young people.
In 100 years time, it is quite likely we will look back and say 'Why did we tolerate 2,000 deaths a year on the road' ? – Why did we tolerate so much excess speed and dangerous driving in city centres?
Categories advocacy, articles Post navigation
Zipp 404 Review
A mixed bag of cyclists


text:
Words related to numeracy
literacy (n.)
"ability to read and write," 1883, from literate + abstract noun suffix -cy. Illiteracy, however, dates back to 17c.
number (n.)
c. 1300, "sum, aggregate of a collection," from Anglo-French noumbre, Old French nombre and directly from Latin numerus "a number, quantity," from PIE root *nem- "assign, allot; take."
Meaning "written symbol or figure of arithmetic value" is from late 14c. Meaning "single (numbered) issue of a magazine" is from 1795. Colloquial sense of "a person or thing" is by 1894. Meaning "dialing combination to reach a particular telephone receiver" is from 1879; hence wrong number (1886). The modern meaning "musical selection" (1885) is from vaudeville theater programs, where acts were marked by a number. Earlier numbers meant "metrical sound or utterance, measured or harmonic expression" (late 15c.) and, from 1580s, "poetical measure, poetry, verse."
Number one "oneself" is from 1704 (mock-Italian form numero uno attested from 1973); the biblical Book of Numbers (c. 1400, Latin Numeri, Greek Arithmoi) is so called because it begins with a census of the Israelites. Childish slang number one and number two for "urination" and "defecation" attested from 1902. Number cruncher is 1966, of machines; 1971 of persons. To get or have (someone's) number "have someone figured out" is attested from 1853; to say one's number is up (1806) meaning "one's time has come" is a reference to the numbers on a lottery, draft, etc. The numbers "illegal lottery" is from 1897, American English.
*nem-
Proto-Indo-European root meaning "assign, allot; take."
It forms all or part of: agronomy; anomie; anomy; antinomian; antinomy; astronomer; astronomy; autonomous; autonomy; benumb; Deuteronomy; economy; enumerate; enumeration; gastronomy; heteronomy; innumerable; metronome; namaste; nemesis; nimble; nim; nomad; nomothetic; numb; numeracy; numeral; numerator; numerical; numerology; numerous; numismatic; supernumerary; taxonomy.
It is the hypothetical source of/evidence for its existence is provided by: Greek nemein "to deal out," nemesis "just indignation;" Latin numerus "number;" Lithuanian nuoma "rent, interest;" Middle Irish nos "custom, usage;" German nehmen "to take."
numerate (adj.)
early 15c., "numbered, counted," from Latin numeratus "counted out," past participle of numerare "to count, to number," from numerus "a number" (see number (n.)). By 1959 as "acquainted with the basic principles of mathematics" (see numeracy).


Launching a new product is an important part for a company's growth strategy. New products create an opportunity for additional products to be available and to be purchased by a company's customers and has the potential to create new customers or to enter a new market. New products have been successful because a company identified a need in the market. However, this process may lead to additional costs, and time consuming activity for a company's personnel. A company should ask if the risk will outweigh the rewards. To successfully launch a new product a structured development process should be in place (Linton).


text:
Maori take key roles in public sector
Two high-ranking Maori officials have been appointed to senior roles in the public sector.
Judge Heemi Taumaunu has been made a Judge of the Court Martial.
Judge Taumaunu, of Ngati Porou and Ngai Tahu descent, also holds warrants for the general, jury and youth jurisdictions - and also sits in Rangatahi Courts regularly.
He is a resident judge of the Waitakere District Court, and previously worked in Gisborne as a barrister and solicitor and focussed on criminal, Family Court and Youth Court work.
Meanwhile, Enid Ratahi-Pryor has been appointed to the Housing New Zealand Corporation board for a three-year term.
She is the chief executive of Te Tohu O Te Ora O Ngati Awa, a Maori social and health service provider based in Whakatane.
Covid-19: Whānau Ora plans to take govt back to court over Māori data for under 12s
Te Ao Māori RSS


I am an Irish photographer, based in Piercetown on the Kildare/Meath border. I am currently concentrating on commercial and portrait photography. I also cover weddings and events. I got the photography bug soon after buying my first digital compact when i was in my early 20′s. Rarely a week goes by where I don't take at least a handful photos.
I am available for commercial, event and drone/aerial photography, wedding, engagement, christening & baby shoots, and studio photography.
Picasa Website after being a winner in the photo of the month competition in January 2012.


text:
Home / News & Events / Welcome to the inaugural class of the Public Voices Fellowship on the Climate Crisis
Blog · April 8, 2020
Welcome to the inaugural class of the Public Voices Fellowship on the Climate Crisis
Just as we are seeing now with COVID-19, the climate crisis affects all of us, but its impacts are unevenly and unjustly distributed. Those with the greatest power to mitigate and adapt to climate change often have the least incentive to do so, across geography, wealth, age, race, and gender.
We need better and faster ideas from more diverse individuals across these divides, including those most affected by climate impacts, who are able to see new solutions and envision a more just future.
This is why YPCCC is proud to join the The OpEd Project and Senior Advisor Ann MacDougall to launch the Public Voices Fellowship on the Climate Crisis. This Fellowship is part of The OpEd Project's national Public Voices initiative to change who writes history. It is also part of YPCCC's work to diversify and amplify the voices working to build public and political will for climate change action.
Today we are pleased to announce the 20 Fellows for our inaugural year.
The fellows were selected from more than 650 applicants, making selection very competitive.
The 20 Fellows demonstrate high-powered thought leadership in a variety of ways including community organizing, film, public speaking, and public writing. Several bring decades of experience shaping global and domestic climate policy, driving the transition to clean, renewable energy, or articulating the connections between climate change and human health. Some are shaping the political voice of a new generation, engaging faith communities to address climate change, or amplifying the voices of vulnerable, historically underrepresented populations. Others are championing new approaches to achieve equity in transportation, energy, and other sectors while also reducing carbon pollution. They all seek solutions.
Please join us in congratulating the inaugural class of the Public Voices Fellowship on the Climate Crisis!
Saad Amer
Founder, Plus1Vote
Saad Amer is an environmentalist, activist and the Founder of Plus1Vote, an organization dedicated to improving voter turnout and improving representation in our democracy. Reaching millions, the organization rallies voters on issues like climate change, social justice and voting rights.
He is an Expert Reviewer for the upcoming IPCC AR6 report, is on the United Nations Framework Convention on Climate Change's Youth Constituency, and is an Advisor to theNational Parks Conservation Association. He has researched the impacts of climate change on the ground in the Indian Himalayas with USAID, has taught environmental sustainability in China, co-created Harvard University's inaugural Sustainability Plan, and discovered a new hybrid species in French Polynesia.
He has written for National Geographic, PBS and the World Bank, and has spoken at the United Nations and TEDx.
He went to Harvard University where he studied Environmental Science and Public Policy with a minor in Organismic and Evolutionary Biology.
Charles T. Brown, MPA, CPD, LCI
Senior Researcher and Adjunct Professor, Alan M. Voorhees Transportation Center, Edward
J. Bloustein School of Planning and Public Policy at Rutgers University
Charles is a self-proclaimed "street level researcher" working at the intersection of transportation, health, and equity. As one of the nation's leading thought leaders, he has spent his entire career committed to the fight for more equitable, inclusive, and livable communities in the US and abroad. As a survivor of both Hurricane Katrina and Hurricane Sandy, he understands firsthand the importance of increasing access to public transportation and building more safe and convenient spaces for people to bike, walk, roll and "e-scoot" to improve their overall health and wellbeing. His background includes public and private sector experience in urban and regional planning, public policy, and research. He has led community outreach and engagement involving public agencies, for-profits, and non-profit organizations across the US and abroad. He has developed and taught courses on introductory and advanced environmental justice (EJ), equity, vision zero, and complete streets for the National Transit Institute, Federal Transit Administration, Federal Highway Administration, Centers for Disease Control and Prevention (CDC), and New Jersey Department of Transportation. He is an active member of the Transportation Research Board (TRB) Pedestrian Safety Committee and Bicycle Transportation Committee. His work has been published in several journals and featured in the New York Times, CityLab and various other national and local media outlets. He is the recipient of several notable honors in transportation and receives invitations to speak locally, nationally, and internationally. He is a military veteran and a recipient of the Mississippi Commendation Medal and Global War on Terrorism Service Medal.
Nikoosh Carlo, PhD
Owner and Chief Strategist, CNC North Consulting LLC
Dr. Nikoosh Carlo is CEO of CNC North Consulting LLC. She has extensive experience working to advance community-based solutions to climate change. As founder and chief strategist at CNC North Consulting, Dr. Carlo helps clients develop a vision for their climate and Arctic priorities, build momentum to achieve change, and foster partnerships to drive forward movement. Dr. Carlo has a special interest in advancing initiatives that support climate equity and the health and well-being of Arctic residents and Indigenous peoples. Dr. Carlo previously served as senior advisor for climate and Arctic policy to the Governor of Alaska (2017-18), a senior advisor at the U.S. State Department for the U.S. Chairmanship of the Arctic Council (2015-17), and the executive director of the Alaska Arctic Policy Commission (2013-15). Dr. Carlo is Koyukon Athabascan and has deep roots in the Interior Alaska communities of Fairbanks and Tanana, where she was raised. Dr. Carlo received a Ph.D. in neuroscience from the University of California San Diego and a B.S. in psychology from the University of Alaska Fairbanks.
Piper Christian
Co-founder, Utah Youth Environmental Summit
Student, University of Utah
Piper Christian is a Sophomore at the University of Utah. At the age of sixteen, Piper attended the COP21 UNFCCC Paris Climate Conference as a youth journalist, where she interviewed activists from twelve different countries about their various efforts to protect the environment. When Piper returned home, she founded the Logan Environmental Action Force within her high school. This student group introduced and led the statewide campaign to pass the House Concurrent Resolution on Environmental and Economic Stewardship through the Utah Legislature. This resolution was the first of its kind to recognize the impacts of climate change and encourage emissions reductions within Utah. Piper was a lead student organizer and public spokesperson, allowing for success from start to finish of this advocacy campaign. She gave the TEDx talk "Share Your Story, Protect the Planet" to speak about her experiences.
In 2018, Piper co-founded the Utah Youth Environmental Summit, which trained students from fifteen schools in climate activism strategies. In 2019, she founded a climate advocacy organization at the University of Utah, which engages students in local environmental issues. As a member of the Governing Board of Citizens' Climate Lobby, as well as the Jane Goodall Institute's National Youth Leadership Council, she has worked to inspire youth climate activism around the US. In her free time, Piper enjoys hiking and skiing with her family and friends.
Dr. Frances Colón
CEO, Jasperi Consulting
Dr. Frances Colón is the former Deputy Science and Technology Adviser to the Secretary of State at the U.S. State Department. As a science diplomat in Washington D.C. from 2006 – 2017, Dr. Colón promoted integration of science and technology into foreign policy dialogues, global advancement of women in science, and coordinated climate change policy for President Obama's Energy and Climate Partnership of the Americas. Dr. Colón earned her Ph.D. in Neuroscience in 2004 from Brandeis University and her B.S. in Biology in 1997 from the University of Puerto Rico. She currently specializes in advising on science policy and evidence-based decision-making for local and foreign governments. As an Open Society Foundations 2019 Leadership in Government Fellow, Dr. Colón worked to catalyze policy action to counter the impacts of climate change on vulnerable communities in Florida. Dr. Colón is a member of the National Academies of Science, Engineering and Medicine- New Voices Project, the Roundtable on Science and Technology for Sustainability, and the Global Science Diplomacy Roundtable.
Karen Conover
Vice President, DNV GL
Founding board member, Women in Renewable Industries and Sustainable Energy
(WRISE)
Karen Conover has more than 30 years of international experience with renewable energy technologies, helping clients with development, technology, and operational challenges. She founded a consulting engineering company, which was acquired by DNV GL in 2008. Karen continues to work for DNV GL in a strategic consulting role.
Karen served on the board of the American Wind Energy Association (AWEA) for 20+ years. She's a Past President of the board and served on numerous industry committees. She is a founding board member of Women in Renewable Industries and Sustainable Energy (WRISE) and was chosen as one of the inaugural ambassadors for the US DOE Clean Energy, Education and Empowerment (C3E) program, a part of the global Clean Energy Ministerial. Karen has been recognized as Industry Woman of the Year (WRISE, 2010), Outstanding Contributer to the Wind Industry (AWEA, 2012), and a Wind Energy Influencers and Innovator (Windpower Engineering, 2011 and 2016). She was ranked in the top 20 of the global Women in Power list (2017) and in the top 100 of the North American Power list (2018). She holds a B.S. in Mechanical Engineering from Duke University and was recognized with a Distinguished Alumni Award from Duke's School of Engineering. She also holds an M.S.E. from the University of Arizona. She lives in Seattle, Washington with her husband and two daughters.
Michelle Diane Hernandez
Field Representative and Caseworker, U.S. House of Representatives-
Congressmember Alexandria Ocasio-Cortez
Born and raised in Jackson Heights, Queens to immigrant parents, Michelle proudly works for her home congressional district.
Michelle is the daughter of Colombian and Dominican parents and the first in her family to graduate from college. She has a Bachelor of Arts in Environmental Studies from Brown University. As an alumna, she helped create and chaired the First-Generation Alumni Advisory Committee and served as Vice President of Regional Engagement for the Brown University Latino Alumni Council.
Her professional experience includes interning with the United States Senate for New York Senator Charles Schumer and the Division of Environmental Biology at the National Science Foundation, and working as a Senior Associate for theGROUP, a
political consulting firm in Washington, D.C. Prior to working for Congress, Michelle traveled to France, Kenya, and Brazil with the Youth Climate Leaders fellowship program to learn from and consult for international and grassroots climate change initiatives.
Today, she serves her congressional district as a community liaison and constituent services advocate, engaging residents and community-based organizations on federal-related issues. At the 2018 UN Climate Negotiations, COP24 in Poland, she co-founded and currently co-facilitates the UNFCCC Youth Constituency's Cities Working Group, a global network of youth involved in urban-related climate change advocacy.
Alice Hill
Senior Fellow for Climate Change Policy, Council on Foreign Relations
Alice's work at CFR focuses on the risks, consequences, and responses associated with climate change. Hill previously served as special assistant to President Barack Obama and senior director for resilience policy on the National Security Council staff where she led the development of national policy to build greater resilience to catastrophic risk, including climate change. Earlier in her career, she was a supervising judge on the Los Angeles Superior Court. Prior to her judicial service, she was a federal prosecutor and chief of the white-collar crime unit in the United States Attorney's Office in Los Angeles, California. The U.S. Department of Justice awarded her its highest honor for outstanding legal achievement. Oxford University Press published her coauthored book, Building a Resilient Tomorrow: Preparing for the Coming Climate Disruption, in 2019. She currently serves on the boards of the Environmental Defense Fund and Munich Re Group's U.S. based companies.
Mary Anne Hitt
National Director of Campaigns, Sierra Club
Mary Anne Hitt is an advocate and strategist. She is the National Director of Campaigns at the Sierra Club, where she previously served for a decade as director of the Beyond Coal Campaign, recognized as one of the most successful environmental campaigns in history. Working with partners across the nation, the campaign blocked the construction of 200 proposed US coal plants, secured retirement of over half of existing US coal plants, and helped usher in the clean energy era. She also co-hosts the climate storytelling podcast No Place Like Home.
Mary Anne was listed in 2015 as one of the POLITICO 50, POLITICO's list of the top thinkers, doers and visionaries transforming American politics. She has made numerous media appearances including Good Morning America, MNSBC, the New York Times, Washington Post, National Public Radio, and Democracy Now! She was featured in the National Geographic film From the Ashes and the Emmy-winning climate series Years of Living Dangerously.
Mary Anne previously served as the executive director of several grassroots organizations, including Appalachian Voices. She received her Master's of Science in Environmental Studies from the University of Montana and her Bachelor's degree in the College Scholars program at the University of Tennessee, where she later received the 2008 Notable UT Woman Award. She grew up in the mountains of east Tennessee and now lives in West Virginia with her family. Find her @maryannehitt.
Nikayla Jefferson
Lead organizer, Sunrise Movement, San Diego
Besides her work with Sunrise, Nikayla is a climate policy researcher at her alma mater UC Santa Barbara. She served as a California state co-chair for the Bernie Sanders presidential campaign. She plans to pursue the political science Ph.D program at UC Santa Barbara for environmental policy in Fall 2020. In her free time she collects national park pins, hosts disco dance parties, and writes poetry about girls. She is published in the Los Angeles Times and fanfiction.net.
Dr. Jennifer Marlon
Research Scientist and Lecturer, Yale School of Forestry & Environmental Studies
Jennifer Marlon, Ph.D. is an interdisciplinary Research Scientist and Lecturer at Yale School of Environment and the Yale Program on Climate Change Communication. She obtained her Ph.D. and M.S. in Geography from the University of Oregon. Dr. Marlon studies coupled socioecological systems to understand the drivers of environmental change and to improve our ability to mitigate and adapt to climate change. Her recent projects include the Yale Climate Opinion Maps, a reconstruction of global wildfire activity for the past 1000 years, an analysis of coastal residents' hurricane attitudes, and a study of how the emotions of hope and doubt motivate Americans to act on climate. She has published over 50 peer-reviewed articles and currently teaches Environmental Data Visualization and Communication at Yale.
Rev. Kyle Meyaard-Schaap
National Organizer and Spokesperson, Young Evangelicals for Climate Action
Young Evangelicals for Climate Action is a national network of young Christians taking action to address the climate crisis as an expression of their Christian witness and discipleship. Kyle holds an undergraduate degree in religious studies from Calvin College (B.A. '12), a Master of Divinity degree from Western Theological Seminary (M.Div. '16), and is ordained in the Christian Reformed Church in North America (CRCNA). Much of his professional experience has involved the integration of theology, science, and action toward a deeper awareness of the Christian responsibility to care for God's earth and to love one's neighbors, both at home and around the world.
Kyle has been named to Midwest Energy Group's inaugural 40 Under 40 and the American Conservation Coalition's 30 Under 30 cohorts for his work on climate change education and advocacy. His work has been featured in national and international news outlets such as PBS, NPR, NBC News, Reuters, and U.S. News and World Report. Heis married to Allison and lives in Grand Rapids, Michigan with their son, Simon.
Jennifer Nash
Director, Business and Environment Initiative (BEI) at Harvard Business School
Jennifer works with faculty to establish and implement the BEI's strategy and program portfolio. She coordinates resources across the school to strengthen research and teaching about business and the environment, connect students with career opportunities, and engage with alumni and other managers and policymakers working on topics such as climate change, sustainable agribusiness, and effective governance. Her research examines private and public roles in environmental protection, with an emphasis on innovative, voluntary, and self-regulatory approaches.
Jennifer served as associate director and acting director of the MIT Technology, Business, and Environment Program in 1990, one of the first university-based research programs to explore the changing role of business in environmental protection. For more than a decade she directed Harvard Kennedy School's Regulatory Policy program, the clearinghouse for the study of regulation across Harvard University.
At Harvard Business School, Jennifer has helped launch numerous projects to spark business action to address climate change including a podcast called "Climate Rising," an exhibit for MBA students called "Confronting Climate Change: From Business as Usual to Business as Vital," and series of eight alumni convenings in cities throughout the United States on business leadership in the age of climate change.
Kiera O'Brien
Founder and President, Young Conservatives for Carbon Dividends
Student, Harvard University
Young Conservatives for Carbon Dividends is a lobbying organization that aims to mobilize young conservative leaders in support of the Baker-Shultz Carbon Dividends Plan and renew the GOP's proud legacy of environmental leadership. She graduated from Harvard College in 2020, where she studied Government on the Technology Science track and served as President of the Harvard Republican Club. Kiera grew up in Ketchikan, Alaska, a small island community in southeast Alaska. She enjoys hiking and fishing with her parents, her two sisters, and three small dogs.
Justin Onwenu
Environmental Justice Organizer, Sierra Club
Justin is a 4th generation Detroiter and environmental justice organizer for the Sierra Club. As a Detroit based organizer he fights for clean air, clean and affordable water and a just economy for all communities. This has included advocating for city ordinances that protect drinking water, securing funds for communities in need of air filtration systems, and working with local unions to fight for a just transition.
Originally interested in medicine and public health, he became involved in addressing climate and environmental justice issues in the aftermath of Hurricane Harvey. In the hurricane's aftermath and as Rice University Student Body President, he helped organize thousands to respond and support some of Houston's hardest hit areas. After graduating, he led outreach efforts for the Children's Environmental Health Initiative where he worked to uncover the long-term health, housing, and economic impacts of Hurricane Harvey on Texans.
He currently serves on the Inaugural Michigan Advisory Council on Environmental Justice under the direction of Governor Gretchen Whitmer. He was also recently appointed to the Democratic National Committee's Environment and Climate Crisis Council Platform Committee where he is one of 12 nationwide members responsible for helping develop recommendations for the climate, environment and energy planks of the 2020 Democratic Party Platform.
He firmly believes writing and other forms of communication should play a central role in moving people and policy and has been published in the New York Times, Guardian, Detroit News and Houston Chronicle.
Irene Franco Rubio
Activist. Writer. Organizer.
As an activist for social, racial, and environmental justice, Irene is committed to uplifting BIPOC communities in her hometown of Phoenix, Arizona and across the nation. Irene is a young woman of color of Guatemalan and Mexican descent devoted to the movement for change as an organizer, writer, and young person committed to advocating for historically oppressed populations. She has interned in the U.S. House of Representatives at the office of Congresswoman Deb Haaland, worked for Michelle Obama's non-profit, non-partisan organization When We All Vote, is a distinguish summer scholar at the Harris School of Public Policy at the University of Chicago and has received numerous academic scholarships and fellowships, ranging from ProPublica to the Marguerite Casey Foundation. Through a progressive and intersectional approach, Irene stands up against injustice by tackling the most pressing issues communities of color face as an advocate, intersectional thinker, media professional and change-maker.
Rishi Sugla
Earth science communicator, organizer, and storyteller
PhD Candidate, Scripps Institution of Oceanography
His research uses data from Earth's past to understand how environmental changes across Earth history affected oxygen concentrations in Earth's ocean and impacted the structure of marine ecosystems. He has formal interdisciplinary training through the Center of Marine Biodiversity and Conversation.
He is also involved in transnational climate and environmental justice organizing. In 2015, Rishi helped co-found the Center for Interdisciplinary Environmental Justice alongside other artists, organizers, and scholars that use their combined experiences to support struggles for decolonization. Besides creating workshops, holding talks/reading circles, and writing publicly to amplify the community's voices and bring awareness to the impacts many communities face, the organization also uses science as a strategic tool to support the autonomy and dignity of communities in the face of climate/environmental injustices.
As a storyteller, Rishi has helped work on the upcoming documentary "Salt and Sky" which tackles the nuances of "green" technology and it's environmentally destructive impacts to indigenous communities in the Andean Altiplano. He is also a scientific communicator, and writes for the website Tomorrow Unlocked. Recently, Rishi was part of the From Kurils with Love expedition across the remote Kuril Island Archipelago off the coast of Kamtchatka, Russia as a scientific communicator while assisting with cinematography. Rishi is co-leading the charge to raise support for an environmental monitoring program in this understudied part of the world.
Princella Talley
Diversity Outreach Coordinator and Development Associate, Citizens' Climate Education; Founder of OneGreen Society
Princella Talley is a Diversity Outreach Coordinator and Development Associate at Citizens' Climate Education. Her roles include bringing more voices from underrepresented communities into the conversation for climate solutions and working as part of the Development Team. She is also the lead of the Climate and Culture Action Team, a team dedicated to working at the intersection of climate change and social justice issues.
Before joining the Citizens' Climate Education team, Princella spent more than a decade as a photographer and writer. She covered topics ranging from climate change and ecotourism to artificial intelligence and mobile app development for major news outlets with more than 60 million online visitors, independent publications, and tech startups in Silicon Valley. She's written for CBS Las Vegas, worked as a former copy editor for a digital publication with 135,000 weekly readers, and created content for a GRAMMYs campaign.
Princella is also the founder of the OneGreen Society nonprofit in Central Louisiana. Originally an environmentally-focused content creation service, OneGreen Society was re-envisioned to better serve local community needs by promoting arts as advocacy and supporting the implementation of sustainable food systems in economically disadvantaged communities.
Bianca Beatriz Taylor
Founder, Tourmaline Group LLC
Bianca Beatriz Taylor founded Tourmaline Group in 2019 following 18 years of consistently delivering top performing results as a sovereign credit analyst in the investment management industry. She worked at firms such as Loomis Sayles, Pantera Capital and Franklin Templeton Investments, where she provided strategic advice on Latin American investments. Bianca holds an MPP from UC Berkeley where she focused on energy and environmental policy, and a BA in business economics from UC Santa Barbara. She is fluent in English, Portuguese and Spanish. She also speaks French at an advanced level. Bianca is a citizen of the United States as well as Brazil.
Neelu Tummala, MD, MS
Clinical assistant professor of surgery, George Washington University School of
Dr. Neelu Tummala is a physician and clinical assistant professor of surgery at the George Washington University School of Medicine and Health Sciences. She completed medical school at Case Western Reserve University School of Medicine and residency in Otolaryngology- Head and Neck Surgery at Wake Forest University Baptist Medical Center. She has a special interest in advocacy concerning the health effects of climate change, and has been actively involved with providing medical education as well as giving public testimony on this issue. She is a trained Climate Reality Leader and works with the American Lung Association, Virginia Clinicians for Climate Action, The Medical Society Consortium on Climate and Health, and Environment Virginia as a volunteer activist and educator.
Values/Religion
Behaviors and Actions
Policy and Politics
Six Americas