<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_projections_by_branches(bs, selection, normalise=None):
 """Returns orbital projections for each branch in a band structure. Args: bs (:obj:`~pymatgen.electronic_structure.bandstructure.BandStructureSymmLine`):
 The band structure. selection (list):
 A list of :obj:`tuple` or :obj:`string` identifying which projections to return. Projections can be specified by both element and orbital, for example:: [('Sn', 's'), ('Bi', 'p'), ('S', 'p')] If just the element is specified then all the orbitals of that element are combined. For example, the following will combine all the S orbitals into a single projection:: [('Bi', 's'), ('Bi', 'p'), 'S'] Particular orbitals can also be combined, for example:: [('Bi', 's'), ('Bi', 'p'), ('S', ('s', 'p', 'd'))] normalise (:obj:`str`, optional):
 Normalisation the projections. Options are: * ``'all'``: Projections normalised against the sum of all other projections. * ``'select'``: Projections normalised against the sum of the selected projections. * ``None``: No normalisation performed. Defaults to ``None``. Returns: list: A ``list`` of orbital projections for each branch of the band structure, in the same order as specified in ``selection``, with the format:: Where spin is a :obj:`pymatgen.electronic_structure.core.Spin` object and projections is a :obj:`numpy.array` of:: projections[band_index][kpoint_index] If there are no projections in the band structure, then an array of zeros is returned for each spin. """

    spins = bs.bands.keys()
    projections = get_projections(bs, selection, normalise=normalise)

    branches = []
    for b in bs.branches:
        s = b['start_index']
        e = b['end_index'] + 1

        branch_proj = deepcopy(projections)
        for spin, i in it.product(spins, range(len(projections))):
            branch_proj[i][spin] = projections[i][spin][:, s:e]

        branches.append(branch_proj)
    return branches