コード例 #1
0
ファイル: routes.py プロジェクト: mihinsumaria/onex
def get_a_sequence_from_dataset():
    request_id = request.args.get('requestID', type=int)
    from_data_set = request.args.get('fromDataset', 1, type=int)
    q_seq = request.args.get('qSeq', type=int)
    q_start = request.args.get('qStart', -1, type=int)
    q_end = request.args.get('qEnd', -1, type=int)
    with lock:
        ds_index = current_ds_index if from_data_set else current_q_index

        ds_length = onex.getDatasetSeqCount(ds_index)
        if (q_seq < 0 or q_seq >= ds_length):
            raise InvalidUsage('Sequence index is out of bound')

        seq_length = onex.getDatasetSeqLength(ds_index)
        if (q_start < 0) or (q_end < 0):
            q_start = 0
            q_end = seq_length - 1

        app.logger.debug('Get sequence %d (%d, %d), fromDataSet = %s', q_seq,
                         q_start, q_end, from_data_set)

        query = _to_string(onex.getSubsequence(ds_index, q_seq, q_start,
                                               q_end))

        return jsonify(query=query, requestID=request_id)
コード例 #2
0
ファイル: routes.py プロジェクト: mihinsumaria/onex
def api_find_best_match():
    request_id = request.args.get('requestID', type=int)
    ds_collection_index = request.args.get('dsCollectionIndex', type=int)
    q_find_with_custom_query = request.args.get('qFindWithCustomQuery',
                                                0,
                                                type=int)
    q_seq = request.args.get('qSeq', type=int)
    q_start = request.args.get('qStart', type=int)
    q_end = request.args.get('qEnd', type=int)

    if q_start > q_end or q_start < 0 or q_end < 0:
        raise InvalidUsage('Invalid starting and ending position')

    with lock:
        if not (ds_collection_index == current_collection_index):
            raise InvalidUsage(
                'Dataset {} is not loaded yet'.format(ds_collection_index))

        # Index of the dataset containing the query, by default set to the same dataset
        # where the best match will be searched from
        q_ds_index = current_ds_index
        if q_find_with_custom_query:
            if current_q_index == -1:
                raise InvalidUsage('No custom query is loaded')
            # If find with custom query, set to the dataset containing the custom query
            q_ds_index = current_q_index

        # Get number of sequences in the database containing the query
        q_ds_length = onex.getDatasetSeqCount(q_ds_index)
        if q_seq < 0 or q_seq >= q_ds_length:
            raise InvalidUsage('Sequence index is out of bound')

        seq_length = onex.getDatasetSeqLength(q_ds_index)
        if q_start >= seq_length or q_end >= seq_length:
            raise InvalidUsage('Invalid starting and ending position')

        if q_find_with_custom_query:
            app.logger.debug(
                'Look for best match with sequence %d (%d:%d) in the custom query',
                q_seq, q_start, q_end)
        else:
            app.logger.debug(
                'Look for best match with sequence %d (%d:%d) in dataset %d',
                q_seq, q_start, q_end, current_collection_index)

        r_dist, r_seq, r_start, r_end = \
          onex.findSimilar(current_ds_index, q_ds_index, q_seq, q_start, q_end, 0, -1)

        group_index = onex.getGroupIndex(current_ds_index, r_seq, r_start,
                                         r_end)
        app.logger.debug('Result group index: (%d, %d)', group_index[0],
                         group_index[1])

        result = _to_string(
            onex.getSubsequence(current_ds_index, r_seq, r_start, r_end))
        warpingPath = onex.getWarpingPath(q_ds_index, q_seq, q_start, q_end,
                                          current_ds_index, r_seq, r_start,
                                          r_end)

        return jsonify(result=result,
                       groupIndex=group_index,
                       warpingPath=warpingPath,
                       dist=r_dist,
                       dsName=datasets[current_collection_index],
                       seq=r_seq,
                       start=r_start,
                       end=r_end,
                       requestID=request_id)