def CreateConnection(morphconngraph, edge):
    SourceCell = edge[0]
    TargetCell = edge[1]

    edgedata = _GetEdgeData(morphconngraph, edge)

    SourcePosition = queries.GetStructureApproxPosition(edgedata['source'].ID)
    TargetPosition = queries.GetStructureApproxPosition(edgedata['target'].ID)

    SourcePosition = morphology.correct_scale(SourcePosition)
    TargetPosition = morphology.correct_scale(TargetPosition)

    print str(edgedata['source'].ID) + " : " + str(SourcePosition)
    print str(edgedata['target'].ID) + " : " + str(TargetPosition)

    conn = net.Connection()
    conn.id = "0"
    conn.pre_cell_id = SourceCell.ID
    conn.post_cell_id = TargetCell.ID

    (pre_segmentid, pre_fraction) = GetSegmentIdAndFraction(SourceCell.ID, SourcePosition[0:3])
    (post_segmentid, post_fraction) = GetSegmentIdAndFraction(TargetCell.ID, TargetPosition[0:3])

    conn.pre_segment_id = pre_segmentid
    conn.post_segment_id = post_segmentid
    conn.pre_fraction_along = pre_fraction
    conn.post_fraction_along = post_fraction

#    print conn.toxml()

    return conn
def _SynapseWeight(source, target):
    '''Take the minimum area of the source or target'''

    src_pos = queries.GetStructureApproxPosition(source.ID)
    target_pos = queries.GetStructureApproxPosition(target.ID)

    src_pos = morphology.correct_scale(src_pos)
    target_pos = morphology.correct_scale(target_pos)

    return min(src_pos[3], target_pos[3])