-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCreate_Class_v3.py
More file actions
103 lines (88 loc) · 3.5 KB
/
Create_Class_v3.py
File metadata and controls
103 lines (88 loc) · 3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
class Car:
def __init__(self, brand: str, max_speed: int, mileage: int):
self.brand = brand
self.max_speed = max_speed
self.mileage = mileage
def show_info(self):
print((f"Car brand: {self.brand}, Maximum speed: {self.max_speed}, Mileage: {self.mileage}."))
Ferrari = Car("Ferrari", 205, 21)
Ferrari.show_info()
###
class Car:
def __init__(self, brand: str, max_speed: int, mileage: int):
self.brand = brand
self.max_speed = max_speed
self.mileage = mileage
def show_info(self):
print((f"Car brand: {self.brand}, Maximum speed: {self.max_speed}, Mileage: {self.mileage}."))
class Ferrari(Car):
def __init__(self, max_speed: int, mileage: int):
super().__init__(brand="Ferrari", max_speed=max_speed, mileage=mileage)
# super(Ferrari, self).__init__() works in Python 2 and 3
# But it is redundant, slower (due to the name lookups), and more verbose
class Lamborghini(Car):
def __init__(self, max_speed: int, mileage: int):
super().__init__(brand="Lamborghini", max_speed=max_speed, mileage=mileage)
Car1 = Ferrari(205, 21)
Car1.show_info()
Car2 = Lamborghini(200, 15)
Car2.show_info()
# Bioinformatics scenarior: create a parent class called SequenceAnalyzer and two child classes, DNAAnalyzer and RNAAnalyzer, to analyze the base distribution of DNA and RNA sequences.
class SequenceAnalyzer:
def __init__(self, sequence: str):
self.sequence = sequence
def analyze(self):
raise NotImplementedError("Subclasses must implement the analyze method.")
def show_info(self):
pass
class DNAAnalyzer(SequenceAnalyzer):
def analyze(self):
base_counts = {'A': 0, 'T': 0, 'C': 0, 'G': 0}
total_bases = len(self.sequence)
for base in self.sequence:
if base in base_counts:
base_counts[base] += 1
gc_content = (base_counts['G'] + base_counts['C']) / total_bases * 100
self.analysis_results = {
"Sequence": self.sequence,
"Total bases": total_bases,
"A Count": base_counts['A'],
"T Count": base_counts['T'],
"C Count": base_counts['C'],
"G Count": base_counts['G'],
"GC Content": f"{gc_content:.2f}%"
}
def show_info(self):
print("Analyzing DNA sequence:")
for key, value in self.analysis_results.items():
print(f"{key}: {value}")
class RNAAnalyzer(SequenceAnalyzer):
def analyze(self):
base_counts = {'A': 0, 'U': 0, 'C': 0, 'G': 0}
total_bases = len(self.sequence)
for base in self.sequence:
if base in base_counts:
base_counts[base] += 1
gc_content = (base_counts['G'] + base_counts['C']) / total_bases * 100
self.analysis_results = {
"Sequence": self.sequence,
"Total bases": total_bases,
"A Count": base_counts['A'],
"U Count": base_counts['U'],
"C Count": base_counts['C'],
"G Count": base_counts['G'],
"GC Content": f"{gc_content:.2f}%"
}
def show_info(self):
print("Analyzing RNA sequence:")
for key, value in self.analysis_results.items():
print(f"{key}: {value}")
# Example usage:
dna_sequence = "ATCGATCGTTCG"
rna_sequence = "AUCUAUCGAUCG"
dna_analyzer = DNAAnalyzer(dna_sequence)
rna_analyzer = RNAAnalyzer(rna_sequence)
dna_analyzer.analyze()
rna_analyzer.analyze()
dna_analyzer.show_info()
rna_analyzer.show_info()