mpkato/mobileclick

View on GitHub
mobileclick/run.py

Summary

Maintainability
A
0 mins
Test Coverage
# -*- coding: utf-8 -*-
import os
from .utils import safe_filename

class Run(object):
    def __init__(self, name, desc):
        '''
        name is used for the output filename
        desc is written at the first line of the output file
        '''
        self.name = name
        self.desc = desc
        self.results = {}

    def add(self, qid, elem):
        '''
        Add a result (either
            - sorted list of (Iunit, Float) for iUnit Ranking, or
            - Summary for iUnit Summarization
        Do not add a result more than once for the same QID
        '''
        if qid in self.results:
            raise Exception("Duplicate addition: %s" % qid)
        self.results[qid] = elem

    def validation(self, queries):
        '''
        Return True if all the queries have been added
        '''
        return all([q.qid in self.results for q in queries])

    def _get_filepath(self, dirpath):
        filename = self.FILENAME_TEMPLATE % safe_filename(self.name)
        filepath = os.path.join(dirpath, filename)
        return filepath