def plot_population(ax,<EOL>populationParams,<EOL>electrodeParams,<EOL>layerBoundaries,<EOL>aspect='<STR_LIT>',<EOL>isometricangle=np.pi/<NUM_LIT:12>,<EOL>X=['<STR_LIT>', '<STR_LIT>'],<EOL>markers=['<STR_LIT>', '<STR_LIT:o>'],<EOL>colors=['<STR_LIT:r>', '<STR_LIT:b>'],<EOL>layers = ['<STR_LIT>', '<STR_LIT>'],<EOL>title='<STR_LIT>'):
remove_axis_junk(ax, ['<STR_LIT:right>', '<STR_LIT>', '<STR_LIT:left>', '<STR_LIT>'])<EOL>ax.xaxis.set_ticks([])<EOL>ax.yaxis.set_ticks([])<EOL>ax.plot(electrodeParams['<STR_LIT:x>'],<EOL>electrodeParams['<STR_LIT:z>'],<EOL>'<STR_LIT:.>', marker='<STR_LIT:o>', markersize=<NUM_LIT:5>, color='<STR_LIT:k>', zorder=<NUM_LIT:0>)<EOL>x_0 = np.array(electrodeParams['<STR_LIT>'])[<NUM_LIT:1>, <NUM_LIT:1>:-<NUM_LIT:1>]<EOL>z_0 = np.array(electrodeParams['<STR_LIT>'])[<NUM_LIT:0>, <NUM_LIT:1>:-<NUM_LIT:1>]<EOL>x = np.r_[x_0[-<NUM_LIT:1>], x_0[::-<NUM_LIT:1>], -x_0[<NUM_LIT:1>:], -x_0[-<NUM_LIT:1>]]<EOL>z = np.r_[<NUM_LIT:100>, z_0[::-<NUM_LIT:1>], z_0[<NUM_LIT:1>:], <NUM_LIT:100>]<EOL>ax.fill(x, z, color=(<NUM_LIT:0.5>, <NUM_LIT:0.5>, <NUM_LIT:0.5>), lw=None, zorder=-<NUM_LIT:0.1>)<EOL>r = populationParams[populationParams.keys()[<NUM_LIT:0>]]['<STR_LIT>']<EOL>theta0 = np.linspace(<NUM_LIT:0>, np.pi, <NUM_LIT:20>)<EOL>theta1 = np.linspace(np.pi, <NUM_LIT:2>*np.pi, <NUM_LIT:20>)<EOL>zpos = np.r_[np.array(layerBoundaries)[:, <NUM_LIT:0>],<EOL>np.array(layerBoundaries)[-<NUM_LIT:1>, <NUM_LIT:1>]]<EOL>for i, z in enumerate(np.mean(layerBoundaries, axis=<NUM_LIT:1>)):<EOL><INDENT>ax.text(r, z, '<STR_LIT>' % layers[i],<EOL>va='<STR_LIT>', ha='<STR_LIT:left>', rotation='<STR_LIT>')<EOL><DEDENT>for i, zval in enumerate(zpos):<EOL><INDENT>if i == <NUM_LIT:0>:<EOL><INDENT>ax.plot(r*np.cos(theta0),<EOL>r*np.sin(theta0)*np.sin(isometricangle)+zval,<EOL>color='<STR_LIT:k>', zorder=-r, clip_on=False)<EOL>ax.plot(r*np.cos(theta1),<EOL>r*np.sin(theta1)*np.sin(isometricangle)+zval,<EOL>color='<STR_LIT:k>', zorder=r, clip_on=False)<EOL><DEDENT>else:<EOL><INDENT>ax.plot(r*np.cos(theta0),<EOL>r*np.sin(theta0)*np.sin(isometricangle)+zval,<EOL>color='<STR_LIT>', zorder=-r, clip_on=False)<EOL>ax.plot(r*np.cos(theta1),<EOL>r*np.sin(theta1)*np.sin(isometricangle)+zval,<EOL>color='<STR_LIT:k>', zorder=r, clip_on=False)<EOL><DEDENT><DEDENT>ax.plot([-r, -r], [zpos[<NUM_LIT:0>], zpos[-<NUM_LIT:1>]], '<STR_LIT:k>', zorder=<NUM_LIT:0>, clip_on=False)<EOL>ax.plot([r, r], [zpos[<NUM_LIT:0>], zpos[-<NUM_LIT:1>]], '<STR_LIT:k>', zorder=<NUM_LIT:0>, clip_on=False)<EOL>ax.plot([<NUM_LIT:0>, r], [z_0.min()]*<NUM_LIT:2>, '<STR_LIT:k>', lw=<NUM_LIT:2>, zorder=<NUM_LIT:0>, clip_on=False)<EOL>ax.text(r / <NUM_LIT>, z_0.min()-<NUM_LIT:100>, '<STR_LIT>' % int(r), ha='<STR_LIT>')<EOL>ax.plot([-r]*<NUM_LIT:2>, [z_0.min()+<NUM_LIT:50>, z_0.min()-<NUM_LIT:50>],<EOL>'<STR_LIT:k>', lw=<NUM_LIT:2>, zorder=<NUM_LIT:0>, clip_on=False)<EOL>ax.text(-r, z_0.min(), r'<STR_LIT>', va='<STR_LIT>', ha='<STR_LIT:right>')<EOL>ax.set_yticks([])<EOL>ax.set_yticklabels([])<EOL>for pos in zpos:<EOL><INDENT>ax.text(-r, pos, '<STR_LIT>' % int(pos), ha='<STR_LIT:right>', va='<STR_LIT>')<EOL><DEDENT>ax.set_title(title)<EOL>axis = ax.axis(ax.axis(aspect))<EOL>
Plot the geometry of the column model, optionally with somatic locations
and optionally with reconstructed neurons

kwargs:
::
    ax : matplotlib.axes.AxesSubplot
    aspect : str
        matplotlib.axis argument
    isometricangle : float
        pseudo-3d view angle
    plot_somas : bool
        plot soma locations
    plot_morphos : bool
        plot full morphologies
    num_unitsE : int
        number of excitatory morphos plotted per population
    num_unitsI : int
        number of inhibitory morphos plotted per population
    clip_dendrites : bool
        draw dendrites outside of axis
    mainpops : bool
        if True, plot only main pops, e.g. b23 and nb23 as L23I

return:
::
    axis : list
        the plt.axis() corresponding to input aspect