def __init__(self, row, aat_dialect=False):
        args = row.strip().split("\t")
        self.nargs = len(args)  # number of columns
        # query attributes
        self.query = args[0].split()[0]
        self.qLen = int(args[2])
        self.qStart = int(args[6])
        self.qStop = int(args[7])
        self.qFrame = int(args[16])
        self.qStrand = "-" if args[17] == "Minus" else "+"

        # subject attributes
        self.subject = args[5]
        self.sStart = int(args[8])
        self.sStop = int(args[9])
        self.sDesc = args[15]
        self.sLen = int(args[18])
        if self.qStrand == "-":
            self.sStart, self.sStop = self.sStop, self.sStart

        # pct id/sim
        self.pctid = float(args[10])
        self.pctsim = float(args[11])

        # search metadata
        self.date = args[1]
        self.method = args[3]
        self.database = args[4]

        if aat_dialect:
            self.score = float(args[12]) # domain score
            self.chainNum = int(args[13])   # index of subject in btab file
            self.segmentNum = int(args[14])  # match_part index of query

            # build a unique key by joining query id, subject id and subject index
            self.key = "-".join(str(x) for x in (self.query, self.subject, self.chainNum))
        else:
            self.score = float(args[13])
            self.evalue = float(args[19])
            self.pvalue = float(args[20]) if len(args) > 20 else None
dataset/ETHPy150Open tanghaibao/jcvi/formats/btab.py/BtabLine.__init__/original