# Path: pyPaSWAS/Core/Exceptions.py
# class InvalidOptionException(Exception):
#     '''
#     This class is used to give a consistent user interface to exceptions that are specific for pyPaSWAS.
#     '''


from pyPaSWAS.Core.Exceptions import InvalidOptionException
                        [-3,-4,-2,-4,-3,1,-2,-2,-3,-2,-3,-2,-1,-4,-4,-4,-2,-3,-3,-2,-4,-3,11,-1,2,-2],
                        [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-4,-1,-1,-1,-1,-1,-4,-1,-1,-1,-1,-1],
                        [-2,-3,-2,-3,-2,3,-3,2,-1,-1,-2,-1,-1,-2,-4,-3,-1,-2,-2,-2,-4,-1,2,-1,7,-2],
                        [-1,0,-3,1,4,-3,-2,0,-3,-3,1,-3,-1,0,-4,-1,4,0,0,-1,-4,-2,-2,-1,-2,4]]
        
        self.highest_score = max(max(self.matrix))



class CustomScore(Score):
    ''' This class allows the user to use a custom matrix in pyPaSWAS. '''
    def __init__(self, logger, settings):
        '''
        Constructor
            Parameters:
            matrix:     the custom scoring matrix. Due to the current implementation of pyPaSWAS,
                        this should be a Python list consisting of 26 lists. Each of these inner
                        lists should contain 26 integers. Each integer represents the score for
                        matching nucleotides or amino acids represented by a certain character
                        in subject and query. E.g. the integer at matrix[0][0] contains the score
                        when both the subject and the query contain the character 'A' at the
                        current position, matrix[0][1] when at the current position an 'A' is
                        aligned with a 'B' etc.
            gap_score:   score for a missing nucleotide or amino acid in either subject or query
        '''
        Score.__init__(self, logger, settings)
        self.logger.debug('Initializing CustomScore...')
        #check/set defaults for arguments
        matrix = settings.custom_matrix
        if matrix is None:

# Path: pyPaSWAS/Core/Exceptions.py
# class InvalidOptionException(Exception):
#     '''
#     This class is used to give a consistent user interface to exceptions that are specific for pyPaSWAS.
#     '''


# Path: pyPaSWAS/Core/Scores.py
from pyPaSWAS.Core.Exceptions import InvalidOptionException

                        [-3,-4,-2,-4,-3,1,-2,-2,-3,-2,-3,-2,-1,-4,-4,-4,-2,-3,-3,-2,-4,-3,11,-1,2,-2],
                        [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-4,-1,-1,-1,-1,-1,-4,-1,-1,-1,-1,-1],
                        [-2,-3,-2,-3,-2,3,-3,2,-1,-1,-2,-1,-1,-2,-4,-3,-1,-2,-2,-2,-4,-1,2,-1,7,-2],
                        [-1,0,-3,1,4,-3,-2,0,-3,-3,1,-3,-1,0,-4,-1,4,0,0,-1,-4,-2,-2,-1,-2,4]]
        
        self.highest_score = max(max(self.matrix))



class CustomScore(Score):
    ''' This class allows the user to use a custom matrix in pyPaSWAS. '''
    def __init__(self, logger, settings):
        '''
        Constructor
            Parameters:
            matrix:     the custom scoring matrix. Due to the current implementation of pyPaSWAS,
                        this should be a Python list consisting of 26 lists. Each of these inner
                        lists should contain 26 integers. Each integer represents the score for
                        matching nucleotides or amino acids represented by a certain character
                        in subject and query. E.g. the integer at matrix[0][0] contains the score
                        when both the subject and the query contain the character 'A' at the
                        current position, matrix[0][1] when at the current position an 'A' is
                        aligned with a 'B' etc.
            gap_score:   score for a missing nucleotide or amino acid in either subject or query
        '''
        Score.__init__(self, logger, settings)
        self.logger.debug('Initializing CustomScore...')
        #check/set defaults for arguments
        matrix = settings.custom_matrix
        if matrix is None:

            raise InvalidOptionException('Required argument {0} is missing'.format('matrix'))