Exemple #1
0
    def loadSequence(self, fname, configFname=None, sequence_regexp=None):
        """
        Loads sequence with from file 'fname'
        """
        if configFname is None:
            configFname = DataLoader.default_annotation_fname(fname)

        seqX, seqY = self.getSequences(fname, sequence_regexp)
        al = AnnotationLoader(self.sequence_regexp)
        annotations, annotationsX, annotationsY = al.get_annotations(
            configFname)

        return annotations, seqX, annotationsX, seqY, annotationsY
Exemple #2
0
    def loadSequence(self, fname, configFname=None, sequence_regexp=None):
        """
        Loads sequence with from file 'fname'
        """
        if configFname is None:
            configFname = DataLoader.default_annotation_fname(fname)

        seqX, seqY = self.getSequences(fname, sequence_regexp)
        al = AnnotationLoader(self.sequence_regexp)
        annotations, annotationsX, annotationsY = al.get_annotations(
            configFname
        )

        return annotations, seqX, annotationsX, seqY, annotationsY
Exemple #3
0
    def _prepare_sequence(self, sequence, position, annotation):
        """
        Creates data window from sequence and position

        @rtype : list
        """
        data = list()
        for i in self._get_window_range(position):
            if 0 <= i < len(sequence):
                b = sequence[i]
                check_base(b)
            else:
                b = '-'
            a = AnnotationLoader.get_annotation_at(annotation, position)
            data.append(self._prepare_base(b))
            data[len(data):] = self._prepare_annotations(a)

        return data
    def _prepare_sequence(self, sequence, position, annotation):
        """
        Creates data window from sequence and position

        @rtype : list
        """
        data = list()
        for i in self._get_window_range(position):
            if 0 <= i < len(sequence):
                b = sequence[i]
                check_base(b)
            else:
                b = '-'
            a = AnnotationLoader.get_annotation_at(annotation, position)
            data.append(self._prepare_base(b))
            data[len(data):] = self._prepare_annotations(a)

        return data
def parse_arguments(
    ordered=None,
    keywords=None,
    description='Realign sequence using informations from tandem repeat finder',
):
    if ordered == None:
        ordered = map(lambda x: x[0], parse_arguments_capabilities_ordered)
    if keywords == None:
        keywords = parse_arguments_capabilities_keywords.keys()
    wat = list()
    temp = dict(parse_arguments_capabilities_ordered)
    for x in ordered:
        wat.append((x, temp[x]))
    for x in keywords:
        wat.append(('--' + x, parse_arguments_capabilities_keywords[x]))
    parser = argparse.ArgumentParser(description)
    for k, (l, dct) in wat:
        k = [k]
        k.extend(l)
        parser.add_argument(*k, **dct)
    parsed_arg = parser.parse_args()
    parsed_arg.mathType = get_math_type(parsed_arg.mathType)

    if 'trf_cons' in parsed_arg.tracks:
        parsed_arg.cons_count = 0

    # ====== Validate input parameters =========================================
    if len(parsed_arg.bind_file) % 2 != 0:
        sys.stderr.write(
            'ERROR: If binding files, the number of arguments has' +
            'to be divisible by 2\n')
        return None
    if len(parsed_arg.bind_constant_file) % 2 != 0:
        sys.stderr.write(
            'ERROR: If binding constants (as files), the number of' +
            ' arguments has to be divisible by 2\n')
        return None
    if len(parsed_arg.bind_constant) % 2 != 0:
        sys.stderr.write('ERROR: If binding constants, the number of' +
                         ' arguments has to be divisible by 2\n')
        return None

    # ====== Load model ========================================================
    parsed_arg.model = get_model(parsed_arg, parsed_arg.model)
    if parsed_arg.annotation_model:
        parsed_arg.annotation_model = get_model(
            parsed_arg,
            parsed_arg.annotation_model,
            allow_mask=False,
        )
        if isinstance(parsed_arg.annotation_model, Annotations):
            for state in parsed_arg.model.states:
                if isinstance(state, ClassifierState):
                    state.set_annotations(
                        AnnotationLoader(parsed_arg.sequence_regexp).
                        get_annotations_from_model(
                            parsed_arg.annotation_model))

    io_files = {'input': {}, 'output': {}}
    if 'intermediate_input_files' in keywords:
        io_files['input'] = parsed_arg.intermediate_output_files
    if 'intermediate_output_files' in keywords:
        io_files['output'] = parsed_arg.intermediate_output_files
    parsed_arg.model.add_io_files(io_files)
    # ====== Get Realigner =====================================================
    parsed_arg.algorithm = get_realigner(parsed_arg.algorithm)
    parsed_arg.posterior_processors = map(get_posterior_processor,
                                          parsed_arg.posterior_processors)
    return parsed_arg