+++ /dev/null
-# BLASTN 2.0a19MP-WashU [05-Feb-1998] [Build decunix3.2 01:53:29 05-Feb-1998]
-# BLASTP 2.0.4 [Feb-24-1998]
-class Algorithm:
- def __init__(self, name, version, description = ""):
- self.name = name # 'blastx', 'blastn', etc.
- self.version = version # '2.1.2' or '2.0a19MP-WashU'
- self.description = description # '[05-Feb-1998] [Build dec ...1998]'
-
-# Query= YAL001C YAL001C, Chr I from 147596 to 147665, and 147756 to 151168,
-# reverse complement
-# (3483 letters)
-class Query:
- def __init__(self, name, accession, description, length):
- self.name = name # 'YAL001C'
- self.accession = accession # or None if missing
- self.description = description # 'YAL001C, Chr I from 147596 to ... '
- self.length = length # 3483
-
-# Database: ArabidopsisN
-# 66,211 sequences; 69,074,155 total letters.
-class Database:
- def __init__(self, name, letters, entries):
- self.name = name # ArabidopsisN
- self.letters = letters # 69074155
- self.entries = entries # 66211
-
-class TableInfo:
- def __init__(self, full_description, info):
- self.__dict__.update(info)
- self.full_description = full_description
-
-
-class Search:
- def __init__(self, algorithm, query, database, table, hits,
- parameters, statistics):
- self.algorithm = algorithm
- self.query = query
- self.database = database
- self.table = table
- self.hits = hits
- self.parameters = parameters
- self.statistics = statistics
-
-class Hit:
- def __init__(self, name, description, accession, length,
- algorithm, hsps = None):
- self.name = name
- self.description = description
- self.accession = accession
- self.length = length
- self.algorithm = algorithm
- if hsps is None:
- hsps = []
- self.hsps = hsps
-
- def __len__(self):
- return self.length
-
-
-
-# >GB_PL:ATF18F4 AL021637 Arabidopsis thaliana DNA chromosome 4, BAC clone
-# F18F4 (ESSAII project). 2/98
-# Length = 93,646
-#
-# Minus Strand HSPs:
-#
-# Score = 226 (33.9 bits), Expect = 0.80, P = 0.55
-# Identities = 98/142 (69%), Positives = 98/142 (69%), Strand = Minus / Plus
-# [...lines deleted...]
-# Query: 2486 ATATCAAGCAATTTGATAAGATCTAG 2461
-# A AT A C ATT GA AAGATC AG
-# Sbjct: 85387 AGATTTACCTATT-GAGAAGATCAAG 85411
-
-# computed from the strings
-class _SeqLength:
- def __init__(self, length, identical, positives, gaps):
- self.length = length
- self.identical = identical
- self.positives = positives
- self.gaps = gaps
- def __len__(self):
- return self.length
- def __getattr__(self, name):
- if name == "frac_identical":
- return float(self.identical) / self.length
- elif name == "frac_positives":
- return float(self.positives) / self.length
- raise AttributeError(name)
-
-
-class HomologySeq(_SeqLength):
- def __init__(self, seq, identical, positives, gaps):
- _SeqLength.__init__(self, len(seq), identical, positives, gaps)
- self.seq = seq
-
-class HSPSeq(_SeqLength):
- def __init__(self, name, seq, location, identical, positives, gaps):
- _SeqLength.__init__(self, len(seq), identical, positives, gaps)
- self.name = name
- self.seq = seq
- self.location = location
-
-
-class HSP(_SeqLength):
- def __init__(self,
- query_seq, # ATATCAAGCAATTTGATAAGATCTAG
- homology_seq, # A AT A C ATT GA AAGATC AG
- subject_seq, # AGATTTACCTATT-GAGAAGATCAAG
-
- query_location, # (2486, 2461, negative strand)
- subject_location, # (85387, 85411)
-
- query_name, # Query (or None)
- subject_name, # Sbjct (or None)
-
- algorithm, # an Algorithm
- info, # contains Key/value pairs
- homology_gaps = None, # Is this needed?
- ):
- assert len(query_seq) == len(homology_seq) == len(subject_seq), \
- (query_seq, homology_seq, subject_seq)
- self.algorithm = algorithm
-
- query_gaps = query_seq.count("-")
- subject_gaps = subject_seq.count("-")
- if homology_gaps is None:
- homology_gaps = query_gaps + subject_gaps
- self.info = info
-
- identical = info["identical"]
- # bioperl calls this 'conserved'
- positives = info.get("positives", identical)
-
- _SeqLength.__init__(self, len(query_seq), identical,
- positives, homology_gaps)
-
- self.query = HSPSeq(name = query_name,
- seq = query_seq,
- location = query_location,
- identical = identical,
- positives = positives,
- gaps = query_gaps)
-
- self.subject = HSPSeq(name = subject_name,
- seq = subject_seq,
- location = subject_location,
- identical = identical,
- positives = positives,
- gaps = subject_gaps)
- self.homology = HomologySeq(seq = homology_seq,
- identical = identical,
- positives = positives,
- gaps = homology_gaps)