text:
"""
hdbscan.plots: Use matplotlib to display plots of internal
               tree structures used by HDBSCAN.
"""
# Author: Leland McInnes <leland.mcinnes@gmail.com>
#
# License: BSD 3 clause

import numpy as np

from scipy.cluster.hierarchy import dendrogram
from sklearn.manifold import TSNE
from sklearn.decomposition import PCA
from sklearn.metrics import pairwise_distances
from warnings import warn
from ._hdbscan_tree import compute_stability, labelling_at_cut

CB_LEFT = 0
CB_RIGHT = 1
CB_BOTTOM = 2
CB_TOP = 3

def _get_leaves(condensed_tree):
    cluster_tree = condensed_tree[condensed_tree['child_size'] > 1]
    clusters = cluster_tree['child']
    return [c for c in clusters if len(cluster_tree[cluster_tree['parent'] == c]) == 0]

def _bfs_from_cluster_tree(tree, bfs_root):
    """
    Perform a breadth first search on a tree in condensed tree format
    """

    result = []
    to_process = [bfs_root]

    while to_process:
        result.extend(to_process)
        to_process = tree['child'][np.in1d(tree['parent'], to_process)].tolist()

    return result

def _bfs_from_linkage_tree(hierarchy, bfs_root):
    """
    Perform a breadth first search on a tree in scipy hclust format.
    """

    dim = hierarchy.shape[0]
    max_node = 2 * dim
    num_points = max_node - dim + 1

    to_process = [bfs_root]
    result = []

    while to_process:
        result.extend(to_process)
        to_process = [x - num_points for x in
                      to_process if x >= num_points]
        if to_process:
            to_process = hierarchy[to_process, :2].flatten().astype(np.int64).tolist()

    return result

class CondensedTree(object):
    def __init__(self, condensed_tree_array):
        self._raw_tree = condensed_tree_array

    def get_plot_data(self, leaf_separation=1, log_size=False):
        """Generates data for use in plotting the 'icicle plot' or dendrogram
        plot of the condensed tree generated by HDBSCAN.

        Parameters
        ----------
        leaf_separation : float, optional
                          How far apart to space the final leaves of the
                          dendrogram. (default 1)

        log_size : boolean, optional
                   Use log scale for the 'size' of clusters (i.e. number of
                   points in the cluster at a given lambda value).
                   (default False)

        Returns
        -------
        plot_data : dict
                    Data associated to bars in a bar plot:
                        `bar_centers` x coordinate centers for bars
                        `bar_tops` heights of bars in lambda scale
                        `bar_bottoms` y coordinate of bottoms of bars
                        `bar_widths` widths of the bars (in x coord scale)
                        `bar_bounds` a 4-tuple of [left, right, bottom, top]
                                     giving the bounds on a full set of
                                     cluster bars
                    Data associates with cluster splits:
                        `line_xs` x coordinates for horiontal dendrogram lines
                        `line_ys` y coordinates for horiontal dendrogram lines
        """
        leaves = _get_leaves(self._raw_tree)
        last_leaf = self._raw_tree['parent'].max()
        root = self._raw_tree['parent'].min()

        # We want to get the x and y coordinates for the start of each cluster
        # Initialize the leaves, since we know where they go, the iterate
        # through everything from the leaves back, setting coords as we go
        cluster_x_coords = dict(zip(leaves, [leaf_separation * x
                                             for x in range(len(leaves))]))
        cluster_y_coords = {root: 0.0}

        for cluster in range(last_leaf, root - 1, -1):
            split = self._raw_tree[['child', 'lambda_val']]
            split = split[(self._raw_tree['parent'] == cluster) &
                          (self._raw_tree['child_size'] > 1)]
            if len(split['child']) > 1:
                left_child, right_child = split['child']
                cluster_x_coords[cluster] = np.mean([cluster_x_coords[left_child],
                                                     cluster_x_coords[right_child]])
                cluster_y_coords[left_child] = split['lambda_val'][0]
                cluster_y_coords[right_child] = split['lambda_val'][1]

        # We use bars to plot the 'icicles', so we need to generate centers, tops,
        # bottoms and widths for each rectangle. We can go through each cluster
        # and do this for each in turn.
        bar_centers = []
        bar_tops = []
        bar_bottoms = []
        bar_widths = []

        cluster_bounds = {}

        scaling = np.sum(self._raw_tree[self._raw_tree['parent'] == root]['child_size'])

        if log_size:
            scaling = np.log(scaling)

        for c in range(last_leaf, root - 1, -1):

            cluster_bounds[c] = [0, 0, 0, 0]

            c_children = self._raw_tree[self._raw_tree['parent'] == c]
            current_size = np.sum(c_children['child_size'])
            current_lambda = cluster_y_coords[c]

            if log_size:
                current_size = np.log(current_size)

            cluster_bounds[c][CB_LEFT] = cluster_x_coords[c] * scaling - (current_size / 2.0)
            cluster_bounds[c][CB_RIGHT] = cluster_x_coords[c] * scaling + (current_size / 2.0)
            cluster_bounds[c][CB_BOTTOM] = cluster_y_coords[c]
            cluster_bounds[c][CB_TOP] = np.max(c_children['lambda_val'])

            for i in np.argsort(c_children['lambda_val']):
                row = c_children[i]
                if row['lambda_val'] != current_lambda:
                    bar_centers.append(cluster_x_coords[c] * scaling)
                    bar_tops.append(row['lambda_val'] - current_lambda)
                    bar_bottoms.append(current_lambda)
                    bar_widths.append(current_size)
                if log_size:
                    current_size = np.log(np.exp(current_size) - row['child_size'])
                else:
                    current_size -= row['child_size']
                current_lambda = row['lambda_val']

        # Finally we need the horizontal lines that occur at cluster splits.
        line_xs = []
        line_ys = []

        for row in self._raw_tree[self._raw_tree['child_size'] > 1]:
            parent = row['parent']
            child = row['child']
            child_size = row['child_size']
            if log_size:
                child_size = np.log(child_size)
            sign = np.sign(cluster_x_coords[child] - cluster_x_coords[parent])
            line_xs.append([
                cluster_x_coords[parent] * scaling,
                cluster_x_coords[child] * scaling + sign * (child_size / 2.0)
            ])
            line_ys.append([
                cluster_y_coords[child],
                cluster_y_coords[child]
            ])

        return {
            'bar_centers': bar_centers,
            'bar_tops': bar_tops,
            'bar_bottoms': bar_bottoms,
            'bar_widths': bar_widths,
            'line_xs': line_xs,
            'line_ys': line_ys,
            'cluster_bounds': cluster_bounds
        }

    def _select_clusters(self):
        stability = compute_stability(self._raw_tree)
        node_list = sorted(stability.keys(), reverse=True)[:-1]
        cluster_tree = self._raw_tree[self._raw_tree['child_size'] > 1]
        is_cluster = {cluster: True for cluster in node_list}

        for node in node_list:
            child_selection = (cluster_tree['parent'] == node)
            subtree_stability = np.sum([stability[child] for
                                        child in cluster_tree['child'][child_selection]])

            if subtree_stability > stability[node]:
                is_cluster[node] = False
                stability[node] = subtree_stability
            else:
                for sub_node in _bfs_from_cluster_tree(cluster_tree, node):
                    if sub_node != node:
                        is_cluster[sub_node] = False

        return [cluster for cluster in is_cluster if is_cluster[cluster]]

    def plot(self, leaf_separation=1, cmap='Blues', select_clusters=False,
             label_clusters=False, axis=None, colorbar=True, log_size=False):
        """Use matplotlib to plot an 'icicle plot' dendrogram of the condensed tree.

        Effectively this is a dendrogram where the width of each cluster bar is
        equal to the number of points (or log of the number of points) in the cluster
        at the given lambda value. Thus bars narrow as points progressively drop
        out of clusters. The make the effect more apparent the bars are also colored
        according the the number of points (or log of the number of points).

        Parameters
        ----------
        leaf_separation : float, optional
                          How far apart to space the final leaves of the
                          dendrogram. (default 1)

        cmap : string or matplotlib colormap, optional
               The matplotlib colormap to use to color the cluster bars.
               (default Blues)

        select_clusters : boolean, optional
                          Whether to draw ovals highlighting which cluster
                          bar represent the clusters that were selected by
                          HDBSCAN as the final clusters. (default False)

        label_clusters : boolean, optional
                         If select_clusters is True then this determines
                         whether to draw text labels on the clusters.

        axis : matplotlib axis or None, optional
               The matplotlib axis to render to. If None then a new axis
               will be generated. The rendered axis will be returned.
               (default None)

        colorbar : boolean, optional
                   Whether to draw a matplotlib colorbar displaying the range
                   of cluster sizes as per the colormap. (default True)

        log_size : boolean, optional
                   Use log scale for the 'size' of clusters (i.e. number of
                   points in the cluster at a given lambda value).
                   (default False)

        Returns
        -------
        axis : matplotlib axis
               The axis on which the 'icicle plot' has been rendered.
        """
        try:
            import matplotlib.pyplot as plt
        except ImportError:
            raise ImportError(
                'You must install the matplotlib library to plot the condensed tree.'
                'Use get_plot_data to calculate the relevant data without plotting.')

        plot_data = self.get_plot_data(leaf_separation=leaf_separation, log_size=log_size)

        if cmap != 'none':
            sm = plt.cm.ScalarMappable(cmap=cmap,
                                       norm=plt.Normalize(0, max(plot_data['bar_widths'])))
            sm.set_array(plot_data['bar_widths'])
            bar_colors = [sm.to_rgba(x) for x in plot_data['bar_widths']]
        else:
            bar_colors = 'black'

        if axis is None:
            axis = plt.gca()

        axis.bar(
            plot_data['bar_centers'],
            plot_data['bar_tops'],
            bottom=plot_data['bar_bottoms'],
            width=plot_data['bar_widths'],
            color=bar_colors,
            align='center',
            linewidth=0
        )

        for xs, ys in zip(plot_data['line_xs'], plot_data['line_ys']):
            axis.plot(xs, ys, color='black', linewidth=1)
        if select_clusters:
            try:
                from matplotlib.patches import Ellipse
            except ImportError:
                raise ImportError('You must have matplotlib.patches available to plot selected clusters.')

            chosen_clusters = self._select_clusters()

            for i, c in enumerate(chosen_clusters):
                c_bounds = plot_data['cluster_bounds'][c]
                width = (c_bounds[CB_RIGHT] - c_bounds[CB_LEFT])
                height = (c_bounds[CB_TOP] - c_bounds[CB_BOTTOM])
                center = (
                    np.mean([c_bounds[CB_LEFT], c_bounds[CB_RIGHT]]),
                    np.mean([c_bounds[CB_TOP], c_bounds[CB_BOTTOM]]),
                )

                box = Ellipse(
                    center,
                    2.0 * width,
                    1.2 * height,
                    facecolor='none',
                    edgecolor='r',
                    linewidth=2
                )

                if label_clusters:
                    axis.annotate(str(i), xy=center,
                                  xytext=(center[0] - 4.0 * width, center[1] + 0.65 * height),
                                  horizontalalignment='left',
                                  verticalalignment='bottom')

                axis.add_artist(box)

        if colorbar:
            cb = plt.colorbar(sm)
            if log_size:
                cb.ax.set_ylabel('log(Number of points)')
            else:
                cb.ax.set_ylabel('Number of points')

        axis.set_xticks([])
        for side in ('right', 'top', 'bottom'):
            axis.spines[side].set_visible(False)
        axis.invert_yaxis()
        axis.set_ylabel('$\lambda$ value')

        return axis

    def to_pandas(self):
        """Return a pandas dataframe representation of the condensed tree.

        Each row of the dataframe corresponds to an edge in the tree.
        The columns of the dataframe are `parent`, `child`, `lambda_val`
        and `child_size`.

        The `parent` and `child` are the ids of the
        parent and child nodes in the tree. Node ids less than the number
        of points in the original dataset represent individual points, while
        ids greater than the number of points are clusters.

        The `lambda_val` value is the value (1/distance) at which the `child`
        node leaves the cluster.

        The `child_size` is the number of points in the `child` node.
        """
        try:
            from pandas import DataFrame, Series
        except ImportError:
            raise ImportError('You must have pandas installed to export pandas DataFrames')

        result = DataFrame(self._raw_tree)

        return result

    def to_networkx(self):
        """Return a NetworkX DiGraph object representing the condensed tree.

        Edge weights in the graph are the lamba values at which child nodes
        'leave' the parent cluster.

        Nodes have a `size` attribute attached giving the number of points
        that are in the cluster (or 1 if it is a singleton point) at the
        point of cluster creation (fewer points may be in the cluster at
        larger lambda values).
        """
        try:
            from networkx import DiGraph, set_node_attributes
        except ImportError:
            raise ImportError('You must have networkx installed to export networkx graphs')

        result = DiGraph()
        for row in self._raw_tree:
            result.add_edge(row['parent'], row['child'], weight=row['lambda_val'])

        set_node_attributes(result, 'size', dict(self._raw_tree[['child', 'child_size']]))

        return result

def _line_width(y, linkage):
    if y == 0.0:
        return 1.0
    else:
        return linkage[linkage.T[2] == y][0, 3]

class SingleLinkageTree(object):
    def __init__(self, linkage):
        self._linkage = linkage

    def plot(self, axis=None, truncate_mode=None, p=0, vary_line_width=True):
        """Plot a dendrogram of the single linkage tree.

        Parameters
        ----------
        truncate_mode : str, optional
                        The dendrogram can be hard to read when the original
                        observation matrix from which the linkage is derived
                        is large. Truncation is used to condense the dendrogram.
                        There are several modes:

        ``None/'none'``
                No truncation is performed (Default).

        ``'lastp'``
                The last p non-singleton formed in the linkage are the only
                non-leaf nodes in the linkage; they correspond to rows
                Z[n-p-2:end] in Z. All other non-singleton clusters are
                contracted into leaf nodes.

        ``'level'/'mtica'``
                No more than p levels of the dendrogram tree are displayed.
                This corresponds to Mathematica(TM) behavior.

        p : int, optional
            The ``p`` parameter for ``truncate_mode``.

        vary_line_width : boolean, optional
            Draw downward branches of the dendrogram with line thickness that
            varies depending on the size of the cluster.

        Returns
        -------
        axis : matplotlib axis
               The axis on which the dendrogram plot has been rendered.

        """
        dendrogram_data = dendrogram(self._linkage, p=p, truncate_mode=truncate_mode, no_plot=True)
        X = dendrogram_data['icoord']
        Y = dendrogram_data['dcoord']

        try:
            import matplotlib.pyplot as plt
        except ImportError:
            raise ImportError('You must install the matplotlib library to plot the single linkage tree.')

        if axis is None:
            axis = plt.gca()

        if vary_line_width:
            linewidths = [(_line_width(y[0], self._linkage),
                           _line_width(y[1], self._linkage))
                          for y in Y]
        else:
            linewidths = [(1.0, 1.0)] * len(Y)

        for x, y, lw in zip(X, Y, linewidths):
            left_x = x[:2]
            right_x = x[2:]
            left_y = y[:2]
            right_y = y[2:]
            horizontal_x = x[1:3]
            horizontal_y = y[1:3]

            axis.plot(left_x, left_y, color='k', linewidth=np.log2(1 + lw[0]),
                      solid_joinstyle='miter', solid_capstyle='butt')
            axis.plot(right_x, right_y, color='k', linewidth=np.log2(1 + lw[1]),
                      solid_joinstyle='miter', solid_capstyle='butt')
            axis.plot(horizontal_x, horizontal_y, color='k', linewidth=1.0,
                      solid_joinstyle='miter', solid_capstyle='butt')

        axis.set_xticks([])
        for side in ('right', 'top', 'bottom'):
            axis.spines[side].set_visible(False)
        axis.set_ylabel('distance')

        return axis

    def to_pandas(self):
        """Return a pandas dataframe representation of the single linkage tree.

        Each row of the dataframe corresponds to an edge in the tree.
        The columns of the dataframe are `parent`, `left_child`,
        `right_child`, `distance` and `size`.

        The `parent`, `left_child` and `right_child` are the ids of the
        parent and child nodes in the tree. Node ids less than the number
        of points in the original dataset represent individual points, while
        ids greater than the number of points are clusters.

        The `distance` value is the at which the child nodes merge to form
        the parent node.

        The `size` is the number of points in the `parent` node.
        """
        try:
            from pandas import DataFrame, Series
        except ImportError:
            raise ImportError('You must have pandas installed to export pandas DataFrames')

        max_node = 2 * self._linkage.shape[0]
        num_points = max_node - (self._linkage.shape[0] - 1)

        parent_array = np.arange(num_points, max_node)

        result = DataFrame({
            'parent': parent_array,
            'left_child': self._linkage[0],
            'right_child': self._linkage[1],
            'distance': self._linkage[2],
            'size': self._linkage[3]
        })

        return result

    def to_networkx(self):
        """Return a NetworkX DiGraph object representing the single linkage tree.

        Edge weights in the graph are the distance values at which child nodes
        merge to form the parent cluster.

        Nodes have a `size` attribute attached giving the number of points
        that are in the cluster.
        """
        try:
            from networkx import DiGraph, set_node_attributes
        except ImportError:
            raise ImportError('You must have networkx installed to export networkx graphs')

        max_node = 2 * self._linkage.shape[0]
        num_points = max_node - (self._linkage.shape[0] - 1)

        result = DiGraph()
        for parent, row in enumerate(self._linkage, num_points):
            result.add_edge(parent, row[0], weight=row[2])
            result.add_edge(parent, row[1], weight=row[2])

        size_dict = {parent: row[3] for parent, row in enumerate(self._linkage, num_points)}
        set_node_attributes(result, 'size', size_dict)

        return result

    def get_clusters(self, cut_distance, min_cluster_size=5):
        """Return a flat clustering from the single linkage hierarchy.

        This represents the result of selecting a cut value for robust single linkage
        clustering. The `min_cluster_size` allows the flat clustering to declare noise
        points (and cluster smaller than `min_cluster_size`).

        Parameters
        ----------

        cut_distance : float
            The mutual reachability distance cut value to use to generate a flat clustering.

        min_cluster_size : int, optional
            Clusters smaller than this value with be called 'noise' and remain unclustered
            in the resulting flat clustering.

        Returns
        -------

        labels : array [n_samples]
            An array of cluster labels, one per datapoint. Unclustered points are assigned
            the label -1.
        """
        return labelling_at_cut(self._linkage, cut_distance, min_cluster_size)

class MinimumSpanningTree(object):
    def __init__(self, mst, data):
        self._mst = mst
        self._data = data

    def plot(self, axis=None, node_size=10, node_color='k',
             node_alpha=0.5, edge_alpha=0.25, edge_cmap='Reds_r',
             edge_linewidth=2, vary_linewidth=True, colorbar=True):
        """Plot the minimum spanning tree (as projected into 2D by t-SNE if required).

        Parameters
        ----------

        axis : matplotlib axis, optional
               The axis to render the plot to

        node_size : int, optional
                The size of nodes in the plot (default 10).

        node_color : matplotlib color spec, optional
                The color to render nodes (default black).

        node_alpha : float, optional
                The alpha value (between 0 and 1) to render nodes with
                (default 0.5).

        edge_cmap : matplotlib colormap, optional
                The colormap to color edges by (varying color by edge
                    weight/distance). Can be a cmap object or a string
                    recognised by matplotlib. (default `Reds_r`)

        edge_alpha : float, optional
                The alpha value (between 0 and 1) to render edges with
                (default 0.25).

        edge_linewidth : float, optional
                The linewidth to use for rendering edges (default 2).

        vary_linewidth : bool, optional
                Edge width is proportional to (log of) the inverse of the
                mutual reachability distance. (default True)

        colorbar : bool, optional
                Whether to draw a colorbar. (default True)

        Returns
        -------

        axis : matplotlib axis
                The axis used the render the plot.
        """
        try:
            import matplotlib.pyplot as plt
            from matplotlib.collections import LineCollection
        except ImportError:
            raise ImportError('You must install the matplotlib library to plot the minimum spanning tree.')

        if self._data.shape[0] > 32767:
            warn('Too many data points for safe rendering of an minimal spanning tree!')
            return None

        if axis is None:
            axis = plt.gca()

        if self._data.shape[1] > 2:
            # Get a 2D projection; if we have a lot of dimensions use PCA first
            if self._data.shape[1] > 32:
                # Use PCA to get down to 32 dimension
                data_for_projection = PCA(n_components=32).fit_transform(self._data)
            else:
                data_for_projection = self._data.copy()

            projection = TSNE().fit_transform(data_for_projection)
        else:
            projection = self._data.copy()

        if vary_linewidth:
            line_width = edge_linewidth * (np.log(self._mst.T[2].max() / self._mst.T[2]) + 1.0)
        else:
            line_width = edge_linewidth

        line_coords = projection[self._mst[:, :2].astype(int)]
        line_collection = LineCollection(line_coords, linewidth=line_width,
                                         cmap=edge_cmap, alpha=edge_alpha)
        line_collection.set_array(self._mst[:, 2].T)

        axis.add_artist(line_collection)
        axis.scatter(projection.T[0], projection.T[1], c=node_color, alpha=node_alpha, s=node_size)
        axis.set_xticks([])
        axis.set_yticks([])

        if colorbar:
            cb = plt.colorbar(line_collection)
            cb.ax.set_ylabel('Mutual reachability distance')

        return axis

    def to_pandas(self):
        """Return a Pandas dataframe of the minimum spanning tree.

        Each row is an edge in the tree; the columns are `from`,
        `to`, and `distance` giving the two vertices of the edge
        which are indices into the dataset, and the distance
        between those datapoints.
        """
        try:
            from pandas import DataFrame
        except ImportError:
            raise ImportError('You must have pandas installed to export pandas DataFrames')

        result = DataFrame({'from': self._mst.T[0].astype(int),
                            'to': self._mst.T[1].astype(int),
                            'distance': self._mst.T[2]})
        return result

    def to_networkx(self):
        """Return a NetworkX Graph object representing the minimum spanning tree.

        Edge weights in the graph are the distance between the nodes they connect.

        Nodes have a `data` attribute attached giving the data vector of the
        associated point.
        """
        try:
            from networkx import Graph, set_node_attributes
        except ImportError:
            raise ImportError('You must have networkx installed to export networkx graphs')

        result = Graph()
        for row in self._mst:
            result.add_edge(row[0], row[1], weight=row[2])

        data_dict = {index: tuple(row) for index, row in enumerate(self._data)}
        set_node_attributes(result, 'data', data_dict)

        return result

redpajama_set_name: RedPajamaGithub


text:
Mother to Mother
Remembrance Items
Cremation Assistance
Remembering Our Babies
Walk to Remember
Walk to Remember 2021
An Evening for Life 2019
Wave of Light 2020
Past Photos
Pregnancy and Infant Loss Support, Education & Remembrance
The Birth of Empty Cradle
February 8, 2019 | By Margaret Martin | General
In 1975, my 13 ½ month old son Michael died due to complications caused by a progressive neuromuscular disease, Infantile Spinomuscular Atrophy (SMA). We were devastated, our world was rocked, I would never be the same person. I felt the need to talk to another parent who had survived (literally) this loss. As I searched around, checking with my network of friends, fellow social workers and mental health colleagues, I found nothing. This was in the "old days" before the proliferation of support groups (essentially AA was it), in the time when guided by a benevolent paternalistic intention, parents were advised to forget the tragedy that had occurred and go on with their lives, "Have another baby". Keepsakes were discouraged in the misguided notion that they would cause hurt to the grieving parents. Moms were focused on; dads and siblings were left out, told to take care of Mom. Bereaved Parent the first of a wealth of self-help books for grieving parents had not yet been written.
As I painfully and numbly made my way through my grief I found myself pregnant again and crossed paths with a woman who had been in a group for parents of medically fragile children I had led as a social worker at Regional Center for the Developmentally Disabled. I had been pregnant at the time of the group, and she asked the inevitable question (in the days before sonograms)," What did you have?". I told her what had happened, and she shared that her son also had died. She grabbed my arms and, looking into my eyes, said that I had to tell "them", that "they" would listen to me. In my confusion she explained that I knew what it was like to be a parent whose child had died, and I had the credentials to communicate with the medical community. I was stunned; I was in need, not able to imagine helping others, but her words stayed in my mind. In 1978, I taught a course through UCSD Department of Psychiatry extension program for health professionals working with bereaved parents and for several years served as a preceptor in the UCSD Medical School Family Practice Residency Program.
A few years later I received a call from a woman, Jo Howard, whose daughter had been born still. She had seen a Phil Donohue Show on Healing Hearts, a support group for bereaved parents in Lancing, Michigan. She described the urge to "jump into the TV" and her desire to start such a group in San Diego. In her search, her childbirth coach told her about me. Jo had lots of energy and time; I had professional contacts, and I contacted another bereaved friend whose infant son had died of a heart defect Hypoplastic Left Heart Syndrome, Ann Nickel, with talent in fund raising and marketing. Together, the three of us started the support group Empty Cradle. We researched the few existing groups in the country (before the days of the internet) and distilled and combined all the features we believed would offer personal, individualized, and comprehensive support services to bereaved parents. In 1981 Empty Cradle was born.
We sought initially to find parents for whom the loss had occurred sometime before who would be interested in being trained as "resource parents" to form our service core. Ann placed an article in the Union Tribune and found a meeting place at the Fletcher Hills Presbyterian Church. We put on the coffee and held our breaths. The room was filled to overflowing with mostly women who had shared the same loss, the death of a baby due to miscarriage, stillbirth, or infant death. Women came for whom the loss was more than 20 years, others were sitting on "donuts" just out of the hospital following a stillbirth. Parents shared stories of being advised by their families not to come, cautioned that talking about dead babies was morbid and would hurt them even more. In their need to share with others who had suffered a similar loss, they came.
Empty Cradle provides a number of services and resources for bereaved parents and the community. Monthly support group meetings are held at which couples listen to a presentation, visit informally with each other, and then meet in small sharing circles, including a subsequent pregnancy circle. A lending library offers books and materials to be checked out. A bimonthly newsletter offers a forum for sharing thoughts and feelings, information, announcements of new births, and a place to remember. A quilt joins together images to remember the babies who died. Members are available to talk to community groups, health care professionals, and anyone else who wants to understand how to help grieving parents.
Now, in contrast to when my son died, Empty Cradle supports families and helps build memories to comfort the grieving heart. Empty Cradle is a non-profit organization funded by donations and carried on through the contributions of time and talent of volunteers.
Make A Donation To Empty Cradle
Copyright © 2021 Empty Cradle | All Rights Reserved | 501(c)(3) Organization | Sitemap | Privacy Policy | Designed By: JoshGilson.com

redpajama_set_name: RedPajamaCommonCrawl


text:
Arun K. Gupta
Occupy USA
Tag Archives: police prevent media coverage
February 1, 2015 · 11:13 am
The Danger of America's Police is the Mindset, Not Military Weapons
Police impunity in the U.S. is the norm. A study found that 99.8% of 1,500 officers involved in killing civilians were never convicted.
by Arun Gupta Telesur August 24, 2014
The Aug. 9 killing of a defenseless 18-year-old Michael Brown by Ferguson police officer Darren Wilson was depressingly familiar. Nearly a hundred unarmed black people are killed by cops every year in the United States. Few stir the national conscience despite the often shady circumstances of their deaths. Police impunity is the norm, with one study finding 99.8 percent of 1,500 officers involved in killing civilians were never convicted of criminal charges.
Dorian Johnson, the primary witness to the shooting, claims Officer Wilson gunned down a wounded Brown who had his hands raised in surrender. Brown's corpse was left on the street for four hours. Blacks in Ferguson, Missouri, have long decried systematic violence at the hands of a virtually all-white police force. Ferguson, a suburb of St. Louis, has shifted from 74 percent white to 63 percent African-American since 1990, and has been pummeled by the housing and economic downturn for nearly a decade.
Brown's killing catalyzed these long-simmering grievances into protests. But few were prepared for what came next. Ferguson police outfitted with armored vehicles, sonic weapons, sniper rifles, body armor, and grenade launchers swarmed the streets, firing tear gas, flash-bang grenades, pepper spray balls, and rubber and wooden bullets at civilians. "The police response has shocked America," wrote the New York Times. Police in full battle rattle leveling automatic rifles at protesters with their hands held up were likened to the streets of Baghdad. After reporters were attacked and arrested, the Washington Post equipped its staff with blue bulletproof vests emblazoned with "PRESS," the same gear used on Middle East battlefields. One British paper dispatched its Afghanistan war correspondent to Ferguson to cover the violence.
One welcome surprise was that outrage among Ferguson residents continued for two weeks. It's rare to see sustained defiant protest in the United States. They were fed up with a level of police brutality that is so casual it's shocking. One cop, in full view of video cameras, pointed a rifle at unarmed protesters and yelled, "I will fucking kill you."
Images like that led to an outcry to demilitarize the police. Washington has created a grab bag of military aid through the "1033 program," the Law Enforcement Support Office, and Department of Homeland Security grants, enabling local enforcement agencies to snatch up drones, mine-resistant vehicles, battle gear, and chemical weapons. Much of this came into effect after the September 11 attacks, but some of it pre-dates the attacks, and ending it is not so simple.
Junking surplus military equipment won't alter the social attitudes that give police so much latitude they are effectively the law. The war on drugs and war on crime attitudes have created a disdain for civil liberties in America, especially the rights of the accused and by extension entire communities. Civil liberties deteriorated even further after September 11. In an atmosphere where the public has been stampeded into trading freedom for security, police violence and lack of accountability flourishes with or without military equipment.
After Brown's death it was apparent police were violating constitutional rights: freedom of the press, the use of unreasonable force, the right to assemble, and equal protection. Cops from Ferguson and surrounding communities told protesters when, where, and how they could demonstrate, arresting many engaged in peaceful activity. At least 11 journalists were arrested. Police threatened and attacked journalists and protesters who were filming interactions. And there is a documented pattern of Ferguson police using profiling, stopping, and arresting African-Americans.
Given the systematic crimes by Ferguson police, Missouri State Gov. Jay Nixon was complicit in their lawlessness by not replacing them immediately. Nixon dragged his heels and employed half measures, such as bringing in a state police commander with limited powers and deploying National Guard troops to protect the police 10 days after the police violence began. But at no point were local police ordered off the streets. President Obama whose oath of office is to uphold the Constitution laid low before finally dispatching Attorney General Eric Holder to Ferguson.
Elected officials vacillate because they are afraid to challenge the social power of police. It is a truism that for the police to function the public has to allow itself to be policed. But this truth is startling to many, and what is happening in Ferguson is a rebellion against this order. Most Americans support the police in their explicit function to protect property and implicit function to protect a social order based on racial and class hierarchies. This is not an abstraction. A crowd-funding webpage for Darren Wilson raked in nearly a quarter-million dollars in donations in under a week and was rife with incendiary comments. (A new fundraising site for Wilson was set up with the support of the Ferguson Police Department and netted another ninety thousand dollars in two days.)
One individual who donated a hundred dollars wrote, "I thank all Police, you are the 'Thin Blue Line' protecting normal Americans from aggressive and entitled primitive savages." That sentence succinctly if inadvertently sums up the reactionary view of American history. Only state violence keeps civilization safe. "Entitled primitive savages" crams together three racial stereotypes: the welfare queen, backwards Africans, and uncivilized natives. "Normal" Americans are undoubtedly white as other comments made clear. Brown was a "thing," a "thug," and "a waste of good ammo." "Blacks [use] every excuse in the book to loot and riot." One person exhorted, "Wake up White America." Another said, "All self-respecting whites have a moral responsibility to support our growing number of martyrs to the failed experiment called diversity."
The racially charged aggression reveals the hollowness of the age of Obama. In 2008 Obama presented himself as an avatar of a post-racial America. The more he succeeded, the more it proved America had triumphed over its racist legacy. Liberals embraced this fantasy because through Obama they could see themselves as good, just, and free of bias. But the post-racial ideology made Obama impotent to confront the structural racism that still exists in America. White liberals are no less complicit than white conservatives in supporting and benefiting from the economic and social power they gain from segregated housing, educational and employment. If anything, conservatives more readily acknowledge the role of police is to enforce this order. The two times Obama did speak out about state-sanctioned violence against Blacks, the arrest of Harvard Professor Henry Louis Gates, Jr., for breaking into his own home and the stalking and killing of an unarmed Trayvon Martin by a vigilante, Obama was met with derision by the right and silence by most liberals.
Obama learned his lesson. He had nothing to gain from confronting racism because his power was based on denying, and not confronting, how America is fractured by race and class. If he had successfully challenged it in his first presidential run, which is no mean feat, that would have brought together an organized social base to counter the white reactionary response to Ferguson. Instead, Obama vacationed in silence on Martha's Vineyard, the summer redoubt for America's elite, and took five days to issue a statement that was "tone deaf and disappointing."
For Obama to state the obvious—that the police are the architects of the violence in Ferguson, that they act like an occupying army towards the Blacks there, and that unreconstructed racism is alive and well—would provoke a huge backlash among many whites, and a fair number of Asians and Latinos as well.
To reduce the issue of police violence in America to the equipment they use can easily backfire. While it will be a real struggle to shelve the armored vehicles, body armor, machine guns, and chemical weapons that's a small part of the battle. Removing all the military gear is not going to magically transform the police into officer friendly in a fifties patrol car. The racist policing and profiling won't end, nor will the wide license society, the courts, and the media give them.
I've watched the NYPD in action for 25 years. They rarely rely on military weapons, though they probably have every one imaginable. The New York police brass is savvy. Using tanks, which they once did in 1995 as a show of force against squatters, looks bad for tourism. Using tear gas, rubber bullets, or other "less-lethal" weapons is a no-no given how many bankers and executives might get hit. As observers of Occupy Wall Street witnessed the police used good old-fashioned fists and clubs to bash demonstrators. I talked to one reporter who caught sight of cops bloodying handcuffed activists in the back of a police van during an Occupy protest.
But the most devastating weapon the NYPD has is a policy: stop and frisk. Since 2002 the NYPD has been under court order to collect, compile, and make public data regarding stop-and-frisks. By its own data, the NYPD has violated the constitutional rights of hundreds of thousands of Black and Latino males. They are stopped disproportionately compared to whites by every measure: if there is a warrant against them, they have a weapon or contraband, have committed a crime, or are in a high-crime area. The only way to explain the vast disparity is the policy is racist. Stop and frisk assumed Black and Latino males were criminal suspects based solely on their race. In 2010, former NYPD Commissioner Ray Kelly allegedly told New York State elected officials outright that the police deliberately targeted young Black and Latino men because "he wanted to instill fear in them, every time they leave their home they could be stopped by the police."
During the last decade a movement came together in New York to stop the racist policing that has destroyed tens of thousands of lives by sending innocent men to prison or for nothing more than possessing a little marijuana. More court orders were handed down. Many media outlets called for an end to stop and frisk, and Bill de Blasio won the mayoralty in 2013 by making the policy a campaign issue. Once victorious, however, de Blasio angered many supporters by rehiring Bill Bratton as NYPD Commissioner, who instituted the dubious "broken windows" policing in the 1990s. Stop and frisk appears to have dropped by 90 percent from its peak of 685,000 stops in 2011. But Black and Latino males are still being disproportionately targeted. Moreover, Bratton's focus on infractions like pan handling, pot smoking, graffiti, and subway fare jumpers deliberately targets minorities as well. In three overwhelmingly Black and Latino neighborhoods in Brooklyn, more than 50,000 summons were issued for biking on sidewalks between 2001 and 2013. I never have to worry about that in Manhattan, where I live. Bikers on sidewalks—of which there are many—in the tony white neighborhoods of Tribeca and the Finance District received only 325 tickets during the same period. Making this "crime" central to policing will mean many more young men of color will go directly to jail.
Once snared in the criminal justice system, Black and Latino men have fewer resources to prove their innocence and are less likely to receive leniency. Tickets often snowball into arrest warrants, jail time and permanent criminal records that diminish employment, education, and housing opportunities. Even if stop and frisk has ended, one racist policing practice has been replaced with another. Bratton's policy of sending police to look for minor nuisance and imposing quotas on them for arrests, as the NYPD reportedly does, guarantees needless and hostile encounters. On Staten Island, police targeted Eric Garner on July 17 because he was involved in breaking up a fight. At every point the cops escalated the confrontation and eventually piled on him, choking the 43-year-old father of six to death.
Donna Lieberman, executive director of the New York Civil Liberties Union, says, "We need an end to the kind of philosophy of policing that says it's OK to engage in preventive, detention-like tactics."
That's what really at stake in demilitarizing the police. Undoubtedly military weapons enables greater violence against the public, just as a huge standing army enables U.S. wars abroad. But it was the post-9/11 mindset of preventive war that set all the tanks, planes, and missiles in motion.
The mindset needs to change, one that says police should have latitude and no oversight because whenever "excesses" happen like the killing of Michael Brown occur (or Eric Garner, Oscar Grant, Trayvon Martin, Sean Bell, Amadou Diallo, and thousands of others), the preventive policing still serves the greater cause of keeping the peace of the existing social order.
Take away the military weapons from Ferguson police and they will still be an occupying army to the Black community there. Many Americans want to keep it that way. They have the mindset Blacks and Latinos are a threat and need to be contained. That's what enables the police to take to the streets with military weapons and gear. Ending this mentality is what will stop out-of-control police forces, not taking away their toys.
Filed under Anti-Police Brutality, Race
Tagged as 1033 program, Amadou Diallo, Darren Wilson crowdfunding, demilitarize police, Department of Homeland Security, Donna Lieberman, Dorian Johnson, Eric Garner, Ferguson protests, lack of police accountability, Law Enforcement Support Office, Mayor Bill de Blasio police, Michael Brown, militarized police, Missouri State Governor Jay Nixon, New York Civil Liberties Union, Officer Darren Wilson, Oscar Grant, police prevent media coverage, policy occupying army Ferguson, post-9/11 civil liberties, race and Obama, racial profiling, Sean Bell, stop and frisk, Trayvon Martin
The Occupy USA Today tour (2011-2013)
Crash in Oil Prices Should Bury Peak Oil Once and For All
Is the Anti-Police Violence Movement a New Chapter in the Black Freedom Struggle?
Spaces of Hope: Radical Movements Need Radical Spaces
Two Arrested On Gun Charges In FBI "Sting"
How the Democrats Became The Party of Neoliberalism
Debut of Politico's 'Morning Shift' Raises Ethical Questions Around IFA Sponsorship
To Fight the Unpredictable Effects of Climate Change, We Need an Unpredictable Movement
How the People's Climate March Became a Corporate PR Campaign
The Return of Frankenstein
How Seattle Passed the Highest Minimum Wage In America
Learning from a Socialist in Seattle
Fight For 15 Confidential
Bitcoin Activism: How Michelle Malkin And Suey Park Found Common Cause In Hashtag Movements
Arun Gupta on MSNBC's Melissa Harris-Perry show
How Education Reform Drives Gentrification
Forget the Food Industry: Rediscover the Pleasure of Buying, Cooking and Eating Real Food
Why the Infatuation with Bullies Like Chris Christie?
Make New York City Ungovernable: Lessons from the Anti-Apartheid Struggle in the Age of Bill de Blasio
Charlie Trotter's Complicated Legacy
Uncle Joe has put Antifa in charge of Portland. Trump voters must turn over all guns or they'll be arrested, interr… twitter.com/i/web/status/1… 18 minutes ago
Different Proud Boys channels on Telegram decided that transphobia is their take for today. https://t.co/WSMk4vhTKF 49 minutes ago
MSM are gushing over Biden bc liberals crave a daddy: all-powerful, all-knowing state that can relieve them of any… twitter.com/i/web/status/1… 14 hours ago
Since I have been posting from the Proud Boys Uncensored channel on Telegram, it's worth mentioning it's run by a P… twitter.com/i/web/status/1… 15 hours ago
Proud Boys: Uncensored poll on Telegram. 6232 votes, 92% favor a military coup. https://t.co/f5FzjPSYU1 17 hours ago
Enjoy some Proud Boys tears. https://t.co/YWHpS4w8YN 19 hours ago
The Tankies must be happy now that there is an Uncle Joe in power. 19 hours ago
Proud Boys uncensored saying embrace the "ultranationalist 3rd position," which is just a long-winded way of saying… twitter.com/i/web/status/1… 19 hours ago
The Civil War that America needs. nytimes.com/2021/01/20/tec… 20 hours ago
In case you were wondering, the inauguration was "faked staged and prerecorded." Say the Q's. https://t.co/nKnG69gJAX 20 hours ago
Follow @arunindy
Adbusters AL Alternet anarchists Anthony Hayne Arundhati Roy Arun Gupta audio Brandon Baxter Chicago Citizens United Cleveland Cleveland 5 Connor Stevens Democratic Party Democratic Party (United States) Douglas Wright FBI Federal Bureau of Investigation Frances Fox Piven Guardian homeless Indypendent interview labor May Day media Michael Brown Michael Premo Michelle Fawcett Mobile Nathan Schneider NATO Neoliberalism New York Times Obama Occupied Wall Street Journal Occupy Austin Occupy Boise Occupy Chicago Occupy Cleveland Occupy Honolulu Occupy Little Rock Occupy Los Angeles Occupy Mobile Occupy Nashville Occupy Oakland Occupy Our Homes Occupy Philadelphia Occupy Portland Occupy San Francisco Occupy Wall Street Occupy Youngstown OH OWS Paul Krugman Philadelphia politics radio Rust Belt Salon stop and frisk Susie Cagle Tea Party The Indypendent The Occupied Wall Street Journal The Progressive Toledo Unions video Wall Street Will Potter Wisconsin Youngstown Zuccotti Park
Archives Select Month February 2015 January 2015 March 2014 February 2014 November 2013 October 2013 August 2013 July 2013 June 2013 May 2013 April 2013 February 2013 November 2012 October 2012 September 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 December 2010 November 2010 June 2010 October 2008
Arun K. Gupta · Journalism by Arun K. Gupta


can i install an SDD in a Macbook Pro 13" / Mid 2012, 2.5GHz model? I search the Guides Section and i haven't found any info on that.
Is it possible? If it is what kind of SDD brand and model would you advised me to buy?
Thanks for the fast reply David. I would like to have a Dual Drive configuration. I will have to remove the Optical Drive then which i think is mostly usless for work.
A fast SDD for the Mac OS X, System and Apps and the original HDD that came with the MacBook Pro to storage music, videos and some files. Do you think that is possible?
Do you know what Apple Fussion is? I heard having a dual drive configuration can be complicated and have some issues regarding software. I hope not.
Yes it will take a 2TB. But remember to change out the hard drive/IR cable as it tends to be the first thing to failing on this model. Look at the corner of the cable that comes onto the optical drive and examine for any marks or indentations. I put pads on either side of the cable to prevent the lower case from coming into contact with it.
Wow, thanks for your swift response. So I´ll try with 2TB and keep fingers crossed for practice.
You certainly can install an SSD in your machine, but where do you want it? You can either replace your existing hard disk with an SSD, in which case you'll want to use our hard drive guide. There is also the option of removing your optical drive, though, and replacing it with an SSD installed in an optical bay enclosure.
As for brands and models, we've been really impressed with the speed and reliability of Intel, Crucial, and OCZ solid state drives.
I agree, I just switched the original 500GB HDD by Hitachi for a Crucial BX100 500GB and it runs buttery smooth, also what's important Crucial lets you download an image file to burn onto a CD and create a bootable CD to update the firmware of the SSD without having to plug the SSD to a PC computer (most SSD manufacturers would not allow Mac OS users to update firmware via Mac OS, they only give you a handful of software options for PCs running Windows). I am super happy with mine, shall my optical drive fail I'll simply get a data doubler and pop in the original 500GB HDD for additional storage (it'll stay in the box until then). Have fun fixing!


Break the romanesco into florets, chop any leaves, and cut the stalk into 1cm pieces. Heat 1 tablespoon of olive oil in a large frying pan and fry the stalks and florets for 8-10 minutes until lightly charred and tender. Add the leaves (if any) for the last 2 minutes. Tip it all onto a plate.
Add the spaghetti to the boiling water, cook for 10 minutes, stirring occasionally. Meanwhile, drain the artichokes (reserving the liquid) and blend in a food processor, or with a stick blender, until smooth.
Heat 1 tablespoon of olive oil in the frying pan on a medium heat. Add the chilli and garlic, cook for 2-3 minutes until softened. Add the artichokes and sage; cook for 2 minutes more.
Add a splash each of the drained artichoke water and pasta cooking water to the pan, season well, and cook for another 2-3 minutes. Drain the spaghetti and add it to the pan along with the romanesco.
Squeeze over lemon juice to taste, toss everything together, and serve with the walnuts sprinkled over.


text:
Iggy Azalea Harassing Britney Spears for Ideas as She Prepares to Co-Direct Pretty Girls Video
April 3rd, 2015 by K104
Frazer Harrison/Getty Images via ABCIggy Azalea recorded the upcoming single "Pretty Girls" with Britney Spears, and now the rapper reveals she's been "harassing" Britney for input as she prepares to co-directing the music video for the song.
"Not only getting to work with [Britney] and write the song, but being able to have something to do with the visual and all that has been great," she tells Access Hollywood. "It's just an honor that she would even let me do that for her, so I'm super excited."
Iggy says she and Britney have been brainstorming concepts. "I've got her number, so I've been harassing her… she's added some of her own ideas as well, which is really cool and I think it will be authentic to her still and I'm excited to see what people think about it," she says of the video.
This won't be the first time Iggy has stepped behind the camera. She also directed her last two videos, for "Trouble" and "Black Widow." But she says she's more nervous this time around because it's her first time directing someone else's video. "I want to do her justice!" Iggy says.
"Pretty Girls" arrives May 5 and will be featured on Britney's next album.
azalea britney Co-Direct girls Harassing Ideas Prepares pretty Spears video
French Montana, Doja Cat and Saweetie set the streets on fire in "Handstand video Read More
Lil Uzi Vert shuts down amusement park for birthday party for JT of City Girls Read More
Brandy, Eve, Naturi Naughton and Nadine Velazquez drop new All Rise music video from 'Queens' Read More
Post Malone and The Weeknd portray rival assassins in One Right Now video Read More


text:
Home » Attractions » World's Tallest Thermometer
World's Tallest Thermometer
The World's Tallest Thermometer is an iconic landmark located in Baker, California. The thermometer, just as the name suggests, is the tallest of its kind around the world.
The sign weighs more than 30 tons and measures an incredible 134 feet tall.
World's Tallest Thermometer, History Address & Location, Baker California
The thermometer was put in place in remembrance of the record temperatures recorded at Death Valley on 10th July 1913 – the highest ever at 134 degrees Fahrenheit (57 degrees Celsius). Interestingly, the thermometer can only display temperatures up to a maximum of 134 degrees, in recognition of the record set more than a century ago.
History has it that the thermometer was built in 1991, which was undertaken by the Young Electric Sign Company based in Utah. Its height, at 134 feet, was also chosen to honor the record set in Death Valley (i.e. the 134 degrees Fahrenheit). However, shortly after it was built, strong winds led to its breaking into two.
The company built the thermometer again, but a couple of years later severe winds caused it to sway so much that the company chose to reinforce the electric sign with concrete. Decades later, the monument stands strong.
Stop by at the gift shop, aptly named TEMP134, and get some quirky souvenirs. Check out the novelty trinkets, clothes, and even the original thermometer light bulbs that were sourced from when the thermometer originally got damaged.
One of the highlights of a visit to the World's Tallest Thermometer is the chance to see the unique exhibits. Make sure to stop by the one that shows the conditions that are required to fry an egg and how hot the skillet must be. This is pretty fascinating for most first time visitors, and especially inquisitive kids exploring the monument.
The World's Tallest Thermometer is visible from three unique perspectives, including the Interstate-15 and at the Mojave Desert in southern California. The monument is located at 72157 Baker Blvd and can be accessed by taking Exit 246 off the I-15.
World's Tallest Thermometer Images & Photos
World's Tallest Thermometer Information & Details
72157 Baker Blvd
Baker, CA
Mon - Sun: 10am - 6pm

Ticket Prices / Admission
World's Tallest Thermometer Area, Street & Hotel Map, CA
Frequently Asked Questions About World's Tallest Thermometer
What is the World's Tallest Thermometer address?
72157 Baker Blvd, Baker, CA
Please visit our website for more information on the World's Tallest Thermometer.
What are the World's Tallest Thermometer opening hours?
What are the World's Tallest Thermometer entry prices?
What is the World's Tallest Thermometer phone number?


text:
\section{Introduction}
\label{sec:intro}

Charge symmetry of the strong interactions arises in QCD upon neglecting the
few-MeV mass difference of up and down quarks. With baryon masses of order
GeV, charge symmetry should break down at the level of 10$^{-3}$ in nuclei.
The lightest nuclei to exhibit charge symmetry breaking (CSB) are the $A$=3
mirror nuclei $^3$H--$^3$He, where CSB contributes about 70 keV out of the
764~keV Coulomb-dominated binding-energy difference. This CSB contribution is
indeed of order 10$^{-3}$ with respect to the strong interaction contribution
in realistic $A$=3 binding energy calculations, and is also consistent in both
sign and size with the scattering-length difference $a_{pp}-a_{nn}\approx
1.7$~fm~\cite{miller06}. It can be explained by $\rho^0\omega$ mixing in
one-boson exchange models of the $NN$ interaction, or by considering $N\Delta$
intermediate-state mass differences in models limited to pseudoscalar meson
exchanges \cite{mach01}. In practice, introducing two charge dependent contact
interaction terms in chiral effective field theory ($\chi$EFT) applications,
one accounts quantitatively for the charge dependence of the low energy
$NN$ scattering parameters and, thereby, also for the $A$=3 mirror nuclei
binding-energy difference~\cite{entem03}. CSB is manifest, of course, also
in heavier nuclei.

In $\Lambda$ hypernuclei, isospin invariance excludes one pion exchange (OPE)
from contributing to $\Lambda N$ strong-interaction matrix elements. However,
it was pointed out by Dalitz and Von Hippel (DvH) that the SU(3) octet
$\Lambda_{I=0}$ and $\Sigma^0_{I=1}$ hyperons are admixed in the physical
$\Lambda$ hyperon, thus generating a long-range OPE $\Lambda N$ CSB potential
$V_{\rm CSB}^{\rm OPE}$~\cite{DvH64}. For the mirror \lamb{4}{H}--\lamb{4}{He}
ground-state (g.s.) levels built on the $^3$H--$^3$He g.s. cores, and using
the DvH purely central wavefunction, the OPE CSB contribution amounts to
$\Delta B_{\Lambda}^{J=0}$$\approx$95~keV where $\Delta B_{\Lambda}^J\equiv
B_{\Lambda}^J$(\lamb{4}{He})$-$$B_{\Lambda}^J$(\lamb{4}{H}). This is also
confirmed in our present calculations in which tensor contributions add up
$\approx$100~keV. Shorter-range CSB meson-mixing contributions appear to
be much smaller~\cite{coon99}. Remarkably, the OPE overall contribution
of $\approx$200~keV to the CSB splitting of the \lamb{4}{H}--\lamb{4}{He}
mirror g.s. levels roughly agrees with the large observed g.s. CSB splitting
$\Delta B^{J=0}_{\Lambda}$=233$\pm$92~keV shown in Fig.~\ref{fig:A=4}
which is of order 10$^{-2}$ with respect to the $\Lambda$ nuclear strong
interaction contribution in realistic binding energy calculations of the
$A$=4 hypernuclei. Hence, CSB in $\Lambda$ hypernuclei is likely to be
almost one order of magnitude stronger than in ordinary nuclei.

\begin{figure}[hbt]
\begin{center}
\includegraphics[width=0.48\textwidth,height=5cm]{HHeCSBnew.eps}
\includegraphics[width=0.48\textwidth,height=5cm]{mami16csb_.eps}
\end{center}
\caption{\lamb{4}{H}-\lamb{4}{He} level diagram, before (left panel) and after
(right panel) the recent measurements of the \lamb{4}{He} excitation energy
$E_{\gamma}(1^+_{\rm exc}\to 0^+_{\rm g.s.})$ at J-PARC~\cite{E13}, and of
the \lamb{4}{H} $0^+_{\rm g.s.}$ binding energy at MAMI~\cite{MAMI15,MAMI16},
both highlighted in red in the online version. CSB splittings are shown to
the very right of the \lamb{4}{He} levels. Figure adapted from~\cite{MAMI16}.}
\label{fig:A=4}
\end{figure}

In addition to OPE, $\Lambda-\Sigma^0$ mixing affects also shorter range
meson exchanges (e.g. $\rho$) that in $\chi$EFT are replaced by contact
terms. Quite generally, in baryon-baryon models that include {\it explicitly}
a charge-symmetric (CS) $\Lambda N\leftrightarrow\Sigma N$ ($\Lambda\Sigma$)
coupling, the direct $\Lambda N$ matrix element of $V_{\rm CSB}$ is obtained
from a strong-interaction CS $\Lambda\Sigma$ coupling matrix element
$\langle N\Sigma|V_{\rm CS}|N\Lambda\rangle$ by
\begin{equation}
\langle N\Lambda|V_{\rm CSB}|N\Lambda\rangle = -0.0297\,\tau_{Nz}\,\frac{1}
{\sqrt{3}}\,\langle N\Sigma|V_{\rm CS}|N\Lambda\rangle ,
\label{eq:OME}
\end{equation}
where the $z$ component of the nucleon isospin Pauli matrix ${\vec\tau}_N$
assumes the values $\tau_{Nz}=\pm 1$ for protons and neutrons, respectively,
the isospin Clebsch-Gordan coefficient $1/\sqrt{3}$ accounts for the
$N\Sigma^0$ amplitude in the $I_{NY}=1/2$ $N\Sigma$ state, and the space-spin
structure of this $N\Sigma$ state is taken identical to that of the $N\Lambda$
state sandwiching $V_{\rm CSB}$. The 3\% CSB scale factor $-$0.0297 in
Eq.~(\ref{eq:OME}) follows by evaluating the $\Lambda-\Sigma^0$ mass mixing
matrix element $\langle\Sigma^0|\delta M|\Lambda\rangle$ from SU(3) mass
formulae \cite{DvH64,gal15}. The corresponding diagram for generating $\langle
N\Lambda|V_{\rm CSB}|N\Lambda\rangle$ is shown in Fig.~\ref{fig:mass},
demonstrating explicitly the $\delta M$ CSB insertion.

\begin{figure}[hbt]
\begin{center}
\includegraphics[width=0.5\textwidth]{gg15prlrev_fig2.eps}
\end{center}
\caption{CSB $\Lambda N$ interaction diagram describing a CS $V_{\Lambda N -
\Sigma N}$ interaction followed by a CSB $\Lambda-\Sigma^0$ mass-mixing
vertex.}
\label{fig:mass}
\end{figure}

Since the CSB $\Lambda N$ matrix element in Eq.~(\ref{eq:OME}) is given in
terms of strong-interaction CS $\Lambda\Sigma$ coupling, one wonders how
strong the latter is in realistic microscopic $YN$ interaction models.
Recent four-body calculations of $_{\Lambda}^4{\rm He}$ levels \cite{gazda14},
using the Bonn-J\"{u}lich leading order~(LO) $\chi$EFT $YN$ CS potential
model~\cite{LO06}, show that almost 40\% of the $0^+_{\rm g.s.}\to 1^+_{\rm
exc}$ excitation energy $E_x$ arises from $\Lambda\Sigma$ coupling. This also
occurs in the NSC97 models~\cite{NSC97} as demonstrated by Akaishi
{\it et al}~\cite{akaishi00}. With $\Lambda\Sigma$ matrix elements of order
10~MeV, the 3\% CSB scale factor in Eq.~(\ref{eq:OME}) suggests a CSB splitting
$\Delta E_x \sim 300$~keV, in good agreement with the observed splitting
$E_{\rm x}$(\lamb{4}{He})$-E_{\rm x}$(\lamb{4}{H})$=320\pm 20$~keV~\cite{E13},
see Fig.~\ref{fig:A=4} (right) which also shows a relatively large splitting
of the $A$=4 mirror hypernuclear g.s. levels, $\Delta B^{J=0}_{\Lambda}$=233$
\pm$92~keV~\cite{MAMI15,MAMI16}, with respect to the $\approx$70~keV CSB
splitting in the mirror core nuclei $^3$H and $^3$He.

Here we review recent {\it ab-initio} no-core shell model (NCSM) calculaions
of the $A$=4 $\Lambda$ hypernuclei~\cite{gg15,gg16} using a LO $\chi$EFT
$YN$ CS interaction model~\cite{LO06} in which CSB is generated by
implementing Eq.~(\ref{eq:OME}). We also briefly review a shell model
approach~\cite{gal15}, confronting it with some available data in the
$p$ shell.

\section{LO $\chi$EFT $YN$ interactions}
\label{sec:YN}

N3LO $NN$ \cite{entem03} and N2LO $NNN$ interactions \cite{navratil07},
both with momentum cutoff $\Lambda=500$~MeV, are used in our calculations.
For hyperons, the Bonn-J\"{u}lich SU(3)-based LO $YN$ interaction is used,
plus $V_{\rm CSB}$ evaluated from it according to Eq.~(\ref{eq:OME}).
At LO, $V_{YN}$ consists of regularized pseudoscalar (PS) $\pi$, $K$ and
$\eta$ meson exchanges with coupling constants constrained by SU(3)$_{\rm f}$,
plus five central interaction contact terms simulating the short range
behavior of the $YN$ coupled channel interactions, all of which are
regularized with a cutoff momentum $\Lambda\geq m_{\rm PS}$, varied from 550
to 700 MeV. Two of the five contact terms connect $\Lambda N$ to $\Sigma N$ in
spin-singlet and triplet $s$-wave channels, and are of special importance for
the calculation of CSB splittings. The dominant meson exchange interaction is
OPE which couples the $\Lambda N$ channel exclusively to the $I=\frac{1}{2}$
$\Sigma N$ channel. $K$-meson exchange also couples these two $YN$ channels.
This $V_{YN}^{\rm LO}$ reproduces reasonably well, with $\chi^2/(\rm{d.o.f.})
\approx 1$, the scarce $YN$ low-energy scattering data. It also reproduces
the binding energy of \lamb{3}{H}, with a calculated value $B_{\Lambda}
$(\lamb{3}{H})=110$\pm$10~keV for $\Lambda$=600~MeV \cite{wirth14}, consistent
with experiment (130$\pm$50~keV \cite{davis05}) and with Faddeev calculations
reported by Haidenbauer {\it et al}~\cite{nogga07}. Isospin conserving matrix
elements of $V_{YN}^{\rm LO}$ are evaluated in a momentum-space particle basis
accounting for mass differences within baryon iso-multiplets, while isospin
breaking $(I_{NN}=0)\leftrightarrow (I_{NN}=1)$ and $(I_{YN}=\frac{1}{2})
\leftrightarrow (I_{YN}=\frac{3}{2})$ transitions are suppressed.
The Coulomb interaction between charged baryons is included.

\section{NCSM hypernuclear calculations}
\label{sec:NCSM}

The NCSM approach to few-body calculations uses translationally invariant
harmonic-oscillator (HO) bases expressed in terms of relative Jacobi
coordinates~\cite{navratil00} in which two-body and three-body interaction
matrix elements are evaluated. Antisymmetrization is imposed with respect to
nucleons, and the resulting Hamiltonian is diagonalized in a finite HO basis,
admitting all HO excitation energies $N\hbar\omega$, $N\leq N_{\rm max}$,
up to $N_{\rm max}$ HO quanta. This NCSM nuclear technique was extended
recently to light hypernuclei \cite{gazda14,wirth14}. While it was
possible to obtain fully converged binding energies, with keV precision
for the $A$=3 core nuclei $^3$H and $^3$He, it was not computationally
feasible to perform calculations with sufficiently large $N_\text{max}$
to demonstrate convergence for \lamb{4}{H} and \lamb{4}{He}. In these cases
extrapolation to an infinite model space, $N_\text{max}\rightarrow\infty$,
had to be employed. For details see Ref.~\cite{gg16}. We note that $\Delta
B_{\Lambda}$, and to a lesser extent $B_{\Lambda}$, exhibit fairly weak
$N_\text{max}$ and $\omega$ dependence compared to the behavior of absolute
energies, and the employed extrapolation scheme was found sufficiently robust.
While normally using $N_\text{max}\to\infty$ extrapolated values based on the
last three $N_\text{max}$ values, it was found that including the last four
$N_\text{max}$ values in the fit resulted in $\Delta B_\Lambda$ values that
differed by $\lesssim 10$~keV.

Calculations consisting of fully converged $A$=3 core binding energies
(8.482 MeV for $^3$H and 7.720 MeV for $^3$He) and (\lamb{4}{H}, \lamb{4}{He})
$0^+_{\rm g.s.}$ and $1^{+}_{\rm exc}$ binding energies extrapolated to
infinite model spaces from $N_{\rm max}=18(14)$ for $J=0(1)$ are reported here.
The $NNN$ interaction, was excluded from most of the hypernuclear calculations
after verifying that, in spite of adding almost 80 keV to the $\Lambda$
separation energies $B^{J=0}_{\Lambda}$ and somewhat less to $B^{J=1}_{
\Lambda}$, its inclusion makes a difference of only a few keV for the CSB
splittings $\Delta B^{J}_{\Lambda}$ in both the $0^+_{\rm g.s.}$ and $1^+_{
\rm exc}$ states.

\begin{table}[htb]
\caption{CS averages (in MeV) of $B^{J}_{\Lambda}$(\lamb{4}{H}) and
$B^{J}_{\Lambda}$(\lamb{4}{He}) in four-body calculations using LO $\chi$EFT
$YN$ \cite{LO06} and NLO $\chi$EFT $YN$ \cite{NLO13} interaction models.}
\begin{center}
\begin{tabular}{ccccc}
\br
 & LO (present) & LO~~\cite{nogga13} & NLO~~\cite{nogga13} &
Exp.~(Fig.~\ref{fig:A=4}) \\
\mr
$B^{J=0}_{\Lambda}$ & 2.37$^{+0.20}_{-0.13}$ & 2.5$\pm$0.1 &
1.53$^{+0.08}_{-0.06}$ & 2.27$\pm$0.09 \\
$B^{J=1}_{\Lambda}$ & 1.08$^{+0.58}_{-0.47}$ & 1.4$^{+0.5}_{-0.4}$ &
0.83$^{+0.07}_{-0.10}$ & 1.03$\pm$0.09 \\
$E_{\rm x}$(0$^+_{\rm g.s.}$$\to$1$^+_{\rm exc}$) &
1.29$\pm$0.38 & 1.05$\pm$0.25 & 0.71$\pm$0.04 & 1.25$\pm$0.02 \\
\br
\end{tabular}
\label{tab:nogga}
\end{center}
\end{table}

Table~\ref{tab:nogga} lists results obtained for the $A$=4 hypernuclear levels
in the present LO-$YN$ NCSM calculation with $V_{\rm CSB}$, and in Nogga's
\cite{nogga13} LO- and NLO-$YN$ Faddeev-Yakubovsky calculations without
$V_{\rm CSB}$. To provide meaningful comparison, the `present' column lists
CS averages over mirror levels in \lamb{4}{H} and \lamb{4}{He}. The two
LO columns are consistent with each other within the cited uncertainties,
which are particularly large for $J=1$, and both agree with experiment within
these uncertainties. Uncertainties reflect the resulting cutoff dependence in
the chosen $\Lambda$ range. The NLO results are almost $\Lambda$ independent,
as inferred from their small uncertainties. However, NLO disagrees strongly
with experiment, particularly for $J=0$ and for the accurately determined
$E_x$. It would be interesting in future work to modify the existing NLO
$\chi$EFT version~\cite{NLO13,nogga13} by refitting the $\Lambda\Sigma$
contact terms to both $B^{J=0,1}_{\Lambda}$(A=4) CS-averaged values, and then
apply the CSB generating equation (\ref{eq:OME}) in four-body calculations of
\lamb{4}{H}--\lamb{4}{He}.

\section{CSB in $s$-shell hypernuclei}
\label{sec:s}

Results of recent four-body NCSM calculations of the $A$=4 hypernuclei
\cite{gg15,gg16}, using the Bonn-J\"{u}lich LO $\chi$EFT SU(3)-based
$YN$ interaction model \cite{LO06} with momentum cutoff in the range
$\Lambda$=550--700~MeV, are shown in Fig.~\ref{fig:csb}. Plotted on the
l.h.s. are the calculated $0^+_{\rm g.s.}\to 1^{+}_{\rm exc}$ excitation
energies in \lamb{4}{H} and in \lamb{4}{He}, both of which are found to
increase with $\Lambda$ such that somewhere between $\Lambda$=600 and
650 MeV the $\gamma$-ray measured values of $E_{\rm x}$ are reproduced.
The $\Lambda-\Sigma^0$ mixing CSB splitting $\Delta E_x$ obtained by
using Eq.~(\ref{eq:OME}) also increases with $\Lambda$ such that for
$\Lambda$=600~MeV the calculated value $\Delta E_x = \Delta B_{\Lambda}^{
\rm calc}(0^+_{\rm g.s.})-\Delta B_{\Lambda}^{\rm calc}(1^+_{\rm exc})=330
\pm 40$~keV agrees with the measured value of $E_{\rm x}$(\lamb{4}{He})$-E_{
\rm x}$(\lamb{4}{H})$=320\pm 20$~keV deduced from Fig.~\ref{fig:A=4} (right).

\begin{figure}[hbt]
\begin{center}
\includegraphics[width=0.48\textwidth,height=5cm]{ex-l_vm_csb.eps}
\includegraphics[width=0.48\textwidth,height=5cm]{csb-om_vm.eps}
\end{center}
\caption{NCSM calculations of \lamb{4}{H} and \lamb{4}{He}, using CS LO
$\chi$EFT $YN$ interactions~\cite{LO06} and $V_{\rm CSB}$, Eq.~(\ref{eq:OME}),
derived from these CS interactions. Left: momentum cutoff dependence of
excitation energies $E_{\rm x}$(0$^+_{\rm g.s.}$$\to$1$^+_{\rm exc}$).
The $\gamma$-ray measured values of $E_{\rm x}$ from Fig.~\ref{fig:A=4} are
marked by dotted horizontal lines. Right: HO $\hbar\omega$ dependence, for
$\Lambda$=600~MeV, of the separation-energy differences $\Delta B_{\Lambda}^J$
for $0^+_{\rm g.s.}$ (upper curve) and for $1^+_{\rm exc}$ (lower curve).
Results for other values of $\Lambda$ are shown at the respective absolute
variational energy minima. Figure adapted from \cite{gg16}.}
\label{fig:csb}
\end{figure}

Plotted on the r.h.s. of Fig.~\ref{fig:csb} is the $\hbar\omega$ dependence
of $\Delta B^{J}_{\Lambda}$, including $V_{\rm CSB}$ from Eq.~(\ref{eq:OME})
and using $N_{\rm max}\to\infty$ extrapolated values for each of the four
possible $B^{J}_{\Lambda}$ values calculated at cutoff $\Lambda$=600~MeV.
Extrapolation uncertainties for $\Delta B^{J}_{\Lambda}$ are 10 to 20~keV.
$\Delta B^{J=0}_{\Lambda}$ varies over the spanned $\hbar\omega$ range by
a few keV, whereas $\Delta B^{J=1}_{\Lambda}$ varies by up to $\sim$30~keV.

Fig.~\ref{fig:csb} demonstrates a strong (moderate) cutoff dependence of
$\Delta B^{J=0}_{\Lambda}$ ($\Delta B^{J=1}_{\Lambda}$):
\begin{equation}
\Delta B^{J=0}_{\Lambda}=177^{+119}_{-147}~{\rm keV},\,\,\,\,\,\,
\Delta B^{J=1}_{\Lambda}=-215^{+43}_{-41}~{\rm keV}.
\label{eq:DelB}
\end{equation}
The opposite signs and roughly equal sizes of these $\Delta B^J_{\Lambda}$
values follow from the dominance of the $^1S_0$ contact term (CT) in the
$\Lambda\Sigma$ coupling potential of the LO $\chi$EFT $YN$ Bonn-J\"{u}lich
model~\cite{LO06}, whereas the PS SU(3)-flavor octet (${\bf 8_{\rm f}}$)
meson-exchange contributions are relatively small and of opposite sign to
that of the $^1S_0$ CT contribution. This paradox is resolved by noting that
regularized pieces of Dirac $\delta(\bf r)$ potentials that are discarded in
the classical DvH treatment survive in the LO $\chi$EFT PS meson-exchange
potentials. Suppressing such a zero-range regulated piece of CSB OPE within
the full LO $\chi$EFT $A$=4 hypernuclear wavefunctions gives~\cite{gg16}
\begin{equation}
{\rm OPE (DvH):}\,\,\,\,\,\,\Delta B^{J=0}_{\Lambda}\approx
175\pm 40~{\rm keV},\,\,\,\,\,\, \Delta B^{J=1}_{\Lambda}\approx
-50\pm 10~{\rm keV},
\label{eq:OPE}
\end{equation}
with smaller momentum cutoff dependence uncertainties than in
Eq.~(\ref{eq:DelB}). Both Eqs.~(\ref{eq:DelB}) and (\ref{eq:OPE}) agree
within uncertainties with the CSB splittings $\Delta B^J_{\Lambda}$ marked
in Fig.~\ref{fig:A=4}.

\section{CSB in $p$-shell hypernuclei}
\label{sec:p}

Recent cluster-model work \cite{hiyama09,zhang12,hiyama12} fails to explain
CSB splittings in $p$-shell mirror hypernuclei, apparently for disregarding
the underlying CS $\Lambda\Sigma$ coupling potential. In the approach reviewed
here, one introduces an effective CS $\Lambda\Sigma$ central interaction
${\cal V}_{\Lambda\Sigma}={\bar V}_{\Lambda\Sigma}+\Delta_{\Lambda\Sigma}\,{
\vec s}_N\cdot{\vec s}_Y$, where ${\vec s}_N$ and ${\vec s}_Y$ are the nucleon
and hyperon spin-$\frac{1}{2}$ vectors. The $p$-shell $0p_N0s_Y$ matrix
elements ${\bar V}^{0p}_{\Lambda\Sigma}$ and $\Delta^{0p}_{\Lambda\Sigma}$,
listed in the caption to Table~\ref{tab:pshell}, follow from the shell-model
reproduction of hypernuclear $\gamma$-ray transition energies by
Millener~\cite{millener12} and are smaller by roughly factor of two than the
corresponding $s$-shell $0s_N0s_{Y}$ matrix elements, therefore resulting in
smaller $\Sigma$ hypernuclear admixtures and implying that CSB contributions
in the $p$ shell are weaker with respect to those in the $A=4$ hypernuclei
also by a factor of two. To evaluate these CSB contributions, the
single-nucleon expression (\ref{eq:OME}) is extended by summing over
$p$-shell nucleons~\cite{gal15}:
\begin{equation}
V_{\rm CSB} = -0.0297\,\frac{1}{\sqrt{3}}
\sum_j{({\bar V}^{0p}_{\Lambda\Sigma}+\Delta^{0p}_{\Lambda\Sigma}\,
{\vec s}_j\cdot{\vec s}_Y)\,\tau_{jz}}.
\label{eq:VCSB}
\end{equation}

Results of applying this effective $\Lambda\Sigma$ coupling model to several
pairs of g.s. levels in $p$-shell hypernuclear isomultiplets are given in
Table~\ref{tab:pshell}, abridged from Ref.~\cite{gal15}. All pairs except for
$A=7$ are g.s. mirror hypernuclei identified in emulsion \cite{davis05} where
binding energy systematic uncertainties are largely canceled out in forming
the listed $\Delta B_{\Lambda}^{\rm exp}$ values. The $B_{\Lambda}$ data
selected for the $A$=7 (\lamb{7}{He},~\lamb{7}{Li}$^{\ast}$,~\lamb{7}{Be})
isotriplet of lowest ${\frac{1}{2}}^+$ levels deserve discussion. Recall that
the $^6$Li core state of \lamb{7}{Li}$^{\ast}$ is the $0^+$ $T$=1 at 3.56 MeV,
whereas the core state of \lamb{7}{Li}$_{\rm g.s.}$ is the $1^+$ $T$=0 g.s.
Thus, to obtain $B_{\Lambda}$(\lamb{7}{Li}$^{\ast}$) from $B_{\Lambda}
$(\lamb{7}{Li}$_{\rm g.s.}$) one makes use of the observation
of a 3.88~MeV $\gamma$-ray transition \lamb{7}{Li}$^{\ast}\to
\gamma$+\lamb{7}{Li}~\cite{tamura00}. While emulsion $B_{\Lambda}^{\rm exp}
$(g.s.) values~\cite{davis05} were used for the \lamb{7}{Be}--\lamb{7}{Li}$^{
\ast}$ pair, more recent counter measurements that provide absolute energy
calibrations relative to precise values of free-space known masses were used
for the \lamb{7}{Li}$^{\ast}$--\lamb{7}{He} pair~\cite{botta17} (FINUDA
for \lamb{7}{Li}$_{\rm g.s.}$ $\pi^-$ decay~\cite{botta09} and JLab for
\lamb{7}{He} electroproduction~\cite{JLabL7He}). Note that the value reported
by FINUDA for $B_{\Lambda}$(\lamb{7}{Li}$_{\rm g.s.}$), 5.85$\pm$0.17~MeV,
differs from the emulsion value of 5.58$\pm$0.05~MeV. Recent $B_{\Lambda}$
values from JLab electroproduction experiments for \lamb{9}{Li}~\cite{JLabL9Li}
and \lam{10}{Be}~\cite{JLabL10Be} were not used for lack of similar data on
their mirror partners.

\begin{table}[htb]
\caption{$\langle V_{\rm CSB}\rangle$ contributions (in keV) to $\Delta
B^{\rm calc}_{\Lambda}$ in $p$-shell hypernuclei g.s. isomultiplets,
using $\Lambda\Sigma$ coupling matrix elements ${\bar V}^{0p}_{\Lambda\Sigma}
$=1.45~MeV and $\Delta^{0p}_{\Lambda\Sigma}$=3.04~MeV in Eq.~(\ref{eq:VCSB}).
A similar calculation for the $s$-shell $A$=4 mirror hypernuclei~\cite{gal15}
is included for comparison. Listed values of $\Delta B_{\Lambda}^{\rm exp}$
are based on g.s. emulsion data~\cite{davis05} except for
\lamb{4}{He}--\lamb{4}{H} \cite{MAMI16} and \lamb{7}{Li}$^{\ast}-$\lamb{7}{He}
\cite{botta17}.}
\begin{center}
\begin{tabular}{ccccccc}
\br
\lamb{A}{Z$_{>}$}--\lamb{A}{Z$_{<}$} & \lamb{4}{He}--\lamb{4}{H} &
\lamb{7}{Be}--\lamb{7}{Li}$^{\ast}$ & \lamb{7}{Li}$^{\ast}$--\lamb{7}{He} &
\lamb{8}{Be}--\lamb{8}{Li} & \lamb{9}{B}--\lamb{9}{Li} &
\lam{10}{B}--\lam{10}{Be} \\
$I,J^{\pi}$ & $\frac{1}{2},0^+$ & $1,{\frac{1}{2}}^+$ & $1,{\frac{1}{2}}^+$ &
$\frac{1}{2},1^-$ & $1,{\frac{3}{2}}^+$ & $\frac{1}{2},1^-$ \\
\mr
$\langle V_{\rm CSB}\rangle$ & 232 & 50 & 50 & 119 & 81 & 17 \\
$\Delta B_{\Lambda}^{\rm calc}$ & 226 & $-$17& $-$28 & $+$49 & $-$54 &
$-$136 \\
$\Delta B_{\Lambda}^{\rm exp}$ & 233$\pm$92 & $-$100$\pm$90 &
$-$20$\pm$230 & $+$40$\pm$60 & $-$210$\pm$220 & $-$220$\pm$250 \\
\br
\end{tabular}
\label{tab:pshell}
\end{center}
\end{table}

The $\langle V_{\rm CSB}\rangle$ $p$-shell entries listed in
Table~\ref{tab:pshell} were calculated with $\Lambda$-hypernuclear
weak-coupling shell-model wavefunctions in terms of nuclear-core g.s. leading
SU(4) supermultiplet components, except for $A=8$ where the first excited
nuclear-core level had to be admixed in. The listed $A=7-10$ values of
$\langle V_{\rm CSB}\rangle$ exhibit strong SU(4) correlations, highlighted
by the enhanced value of 119~keV for the SU(4) nucleon-hole configuration
in \lamb{8}{Be}--\lamb{8}{Li} with respect to the modest value of 17~keV
for the SU(4) nucleon-particle configuration in \lam{10}{B}--\lam{10}{Be}.
This enhancement follows from the relative magnitudes of the Fermi-like
interaction term ${\bar V}^{0p}_{\Lambda\Sigma}$ and its Gamow-Teller partner
term $\Delta^{0p}_{\Lambda\Sigma}$. Noting that both the $A=4$ and $A=8$
mirror hypernuclei correspond to SU(4) nucleon-hole configuration, the roughly
factor two ratio of $\langle V_{\rm CSB}{\rangle}_{A=4}$=232~keV to $\langle
V_{\rm CSB}{\rangle}_{A=8}$=119~keV reflects the approximate factor of two
for $0s_N0s_Y$ to $0p_N0s_Y$ $\Lambda\Sigma$ matrix elements discussed above.
However, in distinction from the $A$=4 g.s. isodoublet where $\Delta B_{
\Lambda}\approx \langle V_{\rm CSB}\rangle$, the increasingly negative Coulomb
contributions in the $p$-shell overcome the positive $\langle V_{\rm CSB}{
\rangle}$ contributions, with $\Delta B_{\Lambda}$ becoming negative definite
for $A\geq 9$.

Comparing $\Delta B_{\Lambda}^{\rm calc}$ with $\Delta B_{\Lambda}^{\rm exp}$
in Table~\ref{tab:pshell}, we note the reasonable agreement reached between
the $\Lambda\Sigma$ coupling model calculation and experiment for all five
pairs of $p$-shell hypernuclei listed here. Extrapolating to heavier
hypernuclei, one might naively expect negative values of $\Delta B_{\Lambda}^{
\rm calc}$. However, this assumes that the negative Coulomb contribution
remains as large upon increasing $A$ as it is in the beginning of the $p$
shell, which need not be the case. As nuclear cores beyond $A=9$ become more
tightly bound, the $\Lambda$ hyperon is unlikely to compress these nuclear
cores as much as it does in lighter hypernuclei, so that the additional
Coulomb repulsion in \lam{12}{C}, for example, over that in \lam{12}{B} may
not be sufficiently large to offset the attractive CSB contribution to
$B_{\Lambda}$(\lam{12}{C})$-B_{\Lambda}$(\lam{12}{B}), in agreement with the
value 50$\pm$110~keV suggested recently for this $A$=12 $B_{\Lambda}$(g.s.)
splitting using FINUDA and JLab counter measurements~\cite{botta17}.
In making this argument one relies on the expectation, based on SU(4)
supermultiplet fragmentation patterns in the $p$ shell, that $\langle
V_{\rm CSB}\rangle$ does not exceed $\sim$100~keV.

Some implications of the state dependence of CSB splittings, e.g. the large
difference between the calculated $\Delta B_{\Lambda}(0^+_{\rm g.s.})$ and
$\Delta B_{\Lambda}(1^+_{\rm exc})$ in the $s$ shell, Eqs.~(\ref{eq:DelB}) or
(\ref{eq:OPE}), are worth noting also in the $p$ shell. The most spectacular
one concerns the \lam{10}{B} g.s. doublet splitting, where adding the $\Lambda
\Sigma$ coupling model CSB contribution of $\approx -27$~keV to the
$\approx$110~keV CS $1^-_{\rm g.s.}\to 2^-_{\rm exc}$ g.s. doublet excitation
energy calculated in this model~\cite{millener12} helps bring it down well
below 100~keV, which is the upper limit placed on it from past searches for
a $2^-_{\rm exc}\to 1^-_{\rm g.s.}$ $\gamma$-ray
transition~\cite{chrien90,tamura05}.

\section{Summary and Outlook}
\label{sec:sum}

The recent J-PARC E13-experiment observation of a 1.41 MeV \lamb{4}{He}($1^+_{
\rm exc}\to 0^+_{\rm g.s.}$) $\gamma$-ray transition \cite{E13}, and the
recent MAMI-A1 determination of $B_{\Lambda}$(\lamb{4}{H}) to better than 100
keV \cite{MAMI15,MAMI16}, plus the recenly approved J-PARC E63 experiment to
remeasure the \lamb{4}{H}($1^+_{\rm exc}\to 0^+_{\rm g.s.}$) $\gamma$-ray
transition, arose renewed interest in the sizable CSB already confirmed
thereby in the $A$=4 mirror hypernuclei. It was shown in the present report
how a relatively large $\Delta B_{\Lambda}(0^+_{\rm g.s.})$ CSB contribution
of order 250~keV, in rough agreement with experiment, arises in ab-initio
four-body calculations \cite{gg15,gg16} using $\chi$EFT $YN$ interactions
already at LO.

In $p$-shell hypernuclei, a $\Lambda\Sigma$ coupling shell-model approach
was shown to reproduce CSB splittings of g.s. binding energies~\cite{gal15}.
More theoretical work in this mass range, and beyond, is needed to understand
further and better the salient features of $\Lambda\Sigma$ dynamics
\cite{galmil13}. On the experimental side, the recently proposed ($\pi^-,K^0$)
reaction \cite{agnello16} should be explored, in addition to the standard
($\pi^+,K^+$) reaction, in order to study simultaneously two members of
a given $\Lambda$ hypernuclear isomultiplet, for example reaching both
\lam{12}{B} and \lam{12}{C} on a carbon target.

\ack
A.G. acknowledges instructive discussions with John Millener, as well as the
gracious hospitality extended by the organizers of SPRING 2017 at Ischia,
Italy. The research of D.G. was supported by the Grant Agency of the Czech
Republic (GACR), Grant No. P203/15/04301S.

\section*{References}

redpajama_set_name: RedPajamaArXiv


Comments: The enzyme, characterized from several trypanosomatids (e.g. Trypanosoma cruzi) catalyses two subsequent reactions, leading to production of trypanothione from glutathione and spermidine. Some trypanosomatids (e.g. Crithidia species and some Leishmania species) also contain an enzyme that only carries out the first reaction (cf. EC 6.3.1.8, glutathionylspermidine synthase). The enzyme is bifunctional, and also catalyses the hydrolysis of glutathionylspermidine and trypanothione (cf. EC 3.5.1.78, glutathionylspermidine amidase).


text:
Integrating Search and Social: Best-Practices for Cross-Channel Marketing
by Michel Benjamin
As marketers, we know that the customer's buying journey involves several channels along the path to conversion. From awareness to conversion, our messages need to follow buyers and stay with them. Integrating channels, especially search and social, leads to improved budgeting, bidding, targeting, and performance compared with isolated campaigns.
Paid search and social are both performance channels with particular strengths and weaknesses. For example, paid search captures buyer intent, whereas Facebook doesn't. Facebook can open awareness to a huge new audience that AdWords can't reach. LinkedIn offers the ability to target by job title, industry, and other specific criteria that the other platforms don't offer.
Used intelligently together, paid search and social combine for a powerhouse cross-channel campaign.
Marin Software conducted a study of more than 200 enterprise advertisers managing Google, Bing, and Facebook campaigns, and examined conversion rates, revenue per click, and revenue per conversion for integrated and isolated search and social campaigns. Here is what the study found:
More likely to buy. Users who click an advertiser's search and social ads had approximately double the conversion rate of users who clicked only the search ad. The impact of cross-channel touch was even greater when examining social clicks: Users who clicked both the search and the social ads had a click-through rate approximately four-and-a-half times higher than users who clicked only social ads.
More likely to spend more. Users who clicked both a search and a social ad contributed approximately twice as much revenue per click than users who clicked search ads only. Users who clicked both a search and a social ad contributed six times more revenue per click than users who clicked a social ad only.
Increased revenue per click. Search campaigns managed alongside social advertising campaigns had double the revenue per click than search campaigns managed in isolation.
Considering the revenue implications of integrating search and social advertising, how can we get beyond the theoretical to actually integrating these two channels?
Here are three things to keep in mind to successfully integrate your search and social campaigns.
1. Run both channels
The first step toward integration is assessing your existing cross-channel marketing capabilities. Here are some sample questions to address in your assessment:
Are your search and social teams working toward the same objectives? Is your social marketing team focusing on fan acquisition while your search team is focusing on lead generation? Do your teams work together or in silos?
Are the message and value proposition consistent across channels? For example, is your social marketing team advertising a "low price" while your search marketing is advertising "high quality"? Conflicting messages may confuse the customer and dilute your message and brand.
Are your promotions aligned across channels? Are you launching and ending promotions simultaneously across channels, or letting them run independently? Running channel-specific promotions may cause confusion and frustration among customers.
Is your business intelligence strategy integrated? For example, are you looking at performance reports and making tactical decisions across channels, or are you limiting your business by managing each channel in a silo?
2. Reach the right audiences
Getting in front of the right audience is an essential component of any successful strategy, and the trick is identifying new ones. To start, you at least need some insight on where to begin testing.
To create a successfully integrated strategy, you must focus on the customer, not the channel. The goal is to reach the right customer with the right buying intentions at the right time. Taking an audience-centric approach to marketing focuses on targeting each customer across channels using a combination of intent (search query) and audience (customer profile) data.
Facebook is a great tool to increase your share of voice and brand awareness, because it gives you access to a huge audience. So if you're not sure where to start, and you're looking to increase brand awareness, Facebook might be a good first step.
Building an audience can happen on many different platforms, based on a multitude of attributes. You may want to simply retarget your site visitors who didn't complete a purchase, or you may be looking to reach a more niche audience. Only you know the audience you are trying to reach.
3. Use relevant messaging
Once you've found the right audiences, you need to serve them the right messages. From awareness to conversion, the message you are trying to convey to your target audience should follow customers and stay with them.
Ensure your messages resonate with the right audience and context. Use insights from your highest-performing search ads to see what keywords and other messages you might want to repeat across channels.
Copy can be written for each specific audience, taking into account where they are in the customer funnel and not where you are engaging with them. For example, if you are targeting an interest-based audience, the copy should reflect the item someone has previously expressed an interest in. An ad targeted to competitors may highlight the points of difference between the brands. An ad targeted to purchases for the purpose of an upsell may emphasize specific high-value products.
There's a clear synergy from running search and social together rather than in isolation, but it takes planning and effort. By syncing your messages with the target audience on the right platforms, you can increase performance and drive more leads.
Continue reading "Integrating Search and Social: Best-Practices for Cross-Channel Marketing" ... Read the full article
Subscribe today...it's free!
MarketingProfs provides thousands of marketing resources, entirely free!
Simply subscribe to our newsletter and get instant access to how-to articles, guides, webinars and more for nada, nothing, zip, zilch, on the house...delivered right to your inbox! MarketingProfs is the largest marketing community in the world, and we are here to help you be a better marketer.
Already a member? Sign in now.
Michel Benjamin is a B2B digital marketer and the director of marketing at AUDIENCEX, an independent programmatic trading desk in Marina del Rey, CA.
LinkedIn: Michel Benjamin
Marketing Strategy Resources
You may like these other MarketingProfs resources related to Marketing Strategy.
Creating a Human and Relatable Voice for Your Marketing: Mark Schaefer on Marketing Smarts [Podcast]
Forget about any data or trends before March 2020, argues speaker and author Mark Schaefer. The business world has fundamentally changed, and the winners are companies that can make a personal connection by showing up human.
Avoiding the Pitfalls of Reactive Marketing (Article 3 of 3)
In the digital age, it's vital that marketing be highly adaptable. But focusing too much on reactive marketing can throw your plans out of control. Here's how to find the balance between the two.
Top 3 B2B Marketing Predictions for 2022
Is there even a "normal" to go back in 2022? For B2B marketing, likely not, because digitization and changes in customer expectations are here to stay.
The Traits of B2B Firms With Exceptional Marketing and Sales Performance
B2B firms with sales and marketing performance that has greatly improved over the past year tend to share traits such as relying on good data and having well-aligned go-to-market teams, according to recent research from Dun & Bradstreet.
2022 Marketing Predictions for an Increasingly Digital World
2020 and 2021 have been transformative for B2B marketers, and the trend toward digitalization of marketing will continue into 2022, argues this article.
How to Stop Shiny-Object Syndrome in B2B Marketing (Article 2 of 3)
New marketing platforms pop up every day, but every shiny new tactic isn't necessarily right for your company. Our second article on panic marketing covers "shiny-object syndrome" and what can be done to avoid it.


This download contains the seven original songs from the album Seven which was recently remastered in 2017 by George Horn. This is Becky White's first album originally recorded in 2000. It features seven original songs and White's vocals and guitar. Thank you for your support of independent artists!


text:
We all want a better Dhaka
Tribune Editorial
Published at 06:00 pm December 22nd, 2018
Photo: SYED LATIF HOSSAIN
The government must not overlook the importance of relocating certain industries and administrative headquarters from Dhaka
Living in a city like Dhaka can be a challenge for anyone.
The sheer density of people notwithstanding, the capital city is rife with infrastructural problems that create rampant traffic, terrible levels of pollution, and various other issues that affect the day-to-day life of citizens.
While certain ad hoc measures, such as the introduction of various flyovers throughout the city in the last few years, have made life that much easier, there is a lot more that can be done, and the primary target should be the city's prevailing issues with traffic.
While work on the metro rail and elevated expressway are still underway, there is reason to believe that the city can also be host to a sophisticated subway train system.
With Dhaka's roads and highways housing an inordinate number of vehicles and human haulers every hour of the day, it is not much of a surprise to know that the average speed of the city's traffic is exactly the same as the average speed of walking.
A comprehensive metro system would go a long way in ensuring that the city runs as efficiently as it can.
Of course, the government must not overlook the importance of relocating certain industries and administrative headquarters from Dhaka to other parts of the country, in a wider effort to decentralize the nation -- easing the pressure on the capital city in the process.
Dhaka is one of the most populous cities in the world, with almost 15 million people calling it home -- but we have a long way to go in terms of making it a good one.
Child dies after hospital 'refuses' treatment without money, owner held
Journalist's father killed in Dhaka road crash
OP-ED: Cars are obsolete in cities
Moderate tremor jolts Bangladesh at midnight
Illegal truck parking: Will there be any respite?
Digital Microfinance: Five arrested in Dhaka over e-loan frauds


While this is late, I'm informing you all that the Aro'kai forums have been upgraded into version 5 and you can now register! When registering, keep in mind that we LOVE activity. Also, we understand that v5 may be confusing, or that you simply don't like change -- all I ask is that you give it a chance. That's all I ask. Who knows, maybe in time you'll love the new layout!
Please remember to read the rules and keep an eye out for updates on the forum and game, Aro'kai.


If you are the proud owner of a military surplus or old Army tent then you probably have it safely stored away in your garage, attic, or shed right now, patiently waiting until the warmth of Spring prompts you to endeavor out on a military surplus tent adventure with friends and family.
But the fact of the matter is that your tent was actually made to be used in the winter just as much as it was made to be used in fair weather. Actually it was these tents that saw our forefathers through during the wars that we as a country have fought over the last few hundred years. Especially in the arenas of World War Two, as the Allies marched across war torn and mostly conquered Europe to Berlin; and in Korea where we held fast against the spread of Communism to the south, these habitats of coarse canvas fabric and wooden poles have held fast against the environment even as our soldiers held fast against tyranny and threat to the American Way. Though they are not the most insulated of materials, these tents are very mobile, and they are not bad when it comes to insulating properties, (for example, they are much better insulation than intertwined twigs and sticks for instance). So, here are three things you can do to better use your tent for winter camping.
1. Use insulation. One of the best insulators to be found during the winter time is snow. If you look at WWII camps, especially in the bitter cold, (such as the Battle of the Bulge), you will see that American soldiers often buried their tents in the snow so as to benefit from the insulation that it affords.
2. Put a heat source in it. Many military surplus tents have holes built into them to keep them warm. No concept of how a hole can keep your tent warm? Well, one way is to stick a chimney out of it. You can purchase, or make inexpensive woodstoves to go into your military surplus tent and make a chimney out of stovepipe. This will bring unparalleled warmth to your winter camp that will in ways, make it better than camping in other seasons.
3. Sleep off the ground. In the winter, especially in the bitter cold, a ground cloth will do nothing but create another way for the cold earth to leech the life out of you. Your very best bet is to invest in a cot of some sort to keep some dead air space between your body and the cold cold ground.