Source code for bioat.lib.libdataclasses

from dataclasses import dataclass


[docs] @dataclass class Bed: chromosome: str start: int end: int name: str score: int strand: str
[docs] @dataclass class Bam: pass
[docs] @dataclass(frozen=True) class Fasta: """ usage: fa = Fasta('this_header', 'AGCTACGTCCCCTGA') fa print(fa) """ header: str sequence: str def __eq__(self, other): if self.header == other.header and self.sequence == other.sequence: return True else: return False def __len__(self): return len(self.sequence) @property def length(self): return len(self.sequence) def __str__(self, line_width: int = 20): ls = [] for i in range(self.length // line_width + 1): ls.append(self.sequence[i * line_width:(i + 1) * line_width]) s = '\n'.join(ls) s = f'>{self.header}\n{s}' return s def __repr__(self, show_all: bool = False, show_length: int = 10): if show_all: return f"Fasta(header='{self.header}', sequence='{self.sequence}')" else: if self.length > show_length: s = self.sequence[: show_length // 2] + '...' + self.sequence[-show_length // 2:] return f"Fasta(header='{self.header}', sequence='{s}')" else: return f"Fasta(header='{self.header}', sequence='{self.sequence}')"
[docs] @dataclass(frozen=True) class Fastq(Fasta): header: str sequence: str extras: str quality: str def __eq__(self, other, check_quality: bool = False, check_extras: bool = False): # rewrite from class Fasta checker = [self.sequence == other.sequence] if check_extras: checker.append(self.extras == other.extras) if check_quality: checker.append(self.quality == other.quality) if all(checker): return True else: return False def __str__(self, line_width: int = 20): # rewrite from class Fasta return f'@{self.header}\n{self.sequence}\n{self.extras}\n{self.quality}\n' def __repr__(self): # rewrite from class Fasta return (f"Fastq(header='{self.header}', sequence='{self.sequence}', " f"extras='{self.extras}', quality='{self.quality}')")
[docs] def is_valid(self): if self.length == len(self.quality): return True else: return False
# def get_phread_info(self): # # 判断是Phred33还是Phred64 # # https://www.jianshu.com/p/248308513e2e # pass
[docs] @dataclass(frozen=True) class Assembly(object): contigs: list[Fasta] length: int path: str def __init__(self, path: str): pass
[docs] @dataclass class VCF: pass