import tkinter as tk
from tkinter import filedialog, messagebox
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 유전체 염기서열 -> 숫자 매핑
def sequence_to_numbers(sequence):
mapping = {'A': 1, 'T': 2, 'C': 3, 'G': 4} # 기본 매핑
return [mapping.get(base, 0) for base in sequence]
# 그래프 그리기
def plot_graph(numbers):
x = np.arange(len(numbers))
y = np.array(numbers)
curvature = np.gradient(np.gradient(y)) # 곡률 계산
plt.figure(figsize=(10, 5))
plt.plot(x, y, label='Data')
plt.plot(x, curvature, label='Curvature', linestyle='--')
plt.legend()
plt.title("Genomic Sequence Curvature Graph")
plt.xlabel("Position")
plt.ylabel("Value")
plt.grid()
plt.show()
# 데이터 변환 및 그래프 표시
def process_data():
sequence = input_field.get("1.0", tk.END).strip()
if not sequence:
messagebox.showwarning("Input Error", "유전체 염기서열을 입력하세요!")
return
numbers = sequence_to_numbers(sequence)
result_field.delete("1.0", tk.END)
result_field.insert(tk.END, f"Converted Numbers: {numbers}")
plot_graph(numbers)
# GUI 생성
root = tk.Tk()
root.title("줄기세포 유전체 곡률 그래프")
# 입력 영역
tk.Label(root, text="염기서열 입력").pack()
input_field = tk.Text(root, height=5, width=50)
input_field.pack()
# 변환 버튼
convert_button = tk.Button(root, text="변환 및 그래프 표시", command=process_data)
convert_button.pack()
# 결과 출력 영역
tk.Label(root, text="변환된 숫자").pack()
result_field = tk.Text(root, height=5, width=50)
result_field.pack()
# 실행
root.mainloop()
'정보통신기술(ICT)' 카테고리의 다른 글
맵 타임랩스 소프트웨어(11.28.24) (0) | 2024.11.28 |
---|---|
머터리얼 디스커버리 알고리즘 (0) | 2024.11.27 |
차원 방정식 파이썬 코드 (0) | 2024.11.25 |
웹 하이웨이 (0) | 2024.11.24 |
파이썬 소프트웨어: 핵 융합 엔진 제어 소프트웨어 (0) | 2024.11.24 |