def save_subject_line(self, line):
        c=line.split()
        if len(c)<4: # OOPS, BLAST FORGOT TO PUT SPACE BEFORE 1ST NUMBER
            # THIS HAPPENS IN TBLASTN... WHEN THE SUBJECT SEQUENCE
            # COVERS RANGE 1-1200, THE FOUR DIGIT NUMBER WILL RUN INTO
            # THE SEQUENCE, WITH NO SPACE!!
            c = ['Sbjct:', line[6:self.seq_start_char]] \
               + line[self.seq_start_char:].split() # FIX BLAST SCREW-UP
        self.subject_end=int(c[3])
        if not self.subject_seq:
            self.subject_start = int(c[1])
            # Handle forward orientation.
            if self.subject_start < self.subject_end:
                self.subject_start -= 1
        self.subject_seq += c[2]
        lendiff = len(self.query_seq) - len(self.subject_seq)
        if lendiff > 0: # HANDLE TBLASTN SCREWINESS: Sbjct SEQ OFTEN TOO SHORT!
            # THIS APPEARS TO BE ASSOCIATED ESPECIALLY WITH STOP CODONS *
            self.subject_seq += lendiff * 'A' # EXTEND TO SAME LENGTH AS QUERY
        elif lendiff < 0 and not hasattr(self, 'ignore_query_truncation'):
            # WHAT THE HECK?!?!  WARN THE USER: BLAST RESULTS ARE SCREWY...
            raise ValueError(
                """BLAST appears to have truncated the Query: sequence
                to be shorter than the Sbjct: sequence:
                Query: %s
                Sbjct: %s
                This should not happen!  To ignore this error, please
                create an attribute ignore_query_truncation on the
                BlastHitParser object.""" % (self.query_seq, self.subject_seq))
Synthesize the pattern using some waveshape.  Ignores drum track.
dataset/ETHPy150Open cjlee112/pygr/pygr/parse_blast.py/BlastHitParser.save_subject_line--crossover with--dataset/ETHPy150Open craffel/pretty-midi/pretty_midi/pretty_midi.py/PrettyMIDI.synthesize