Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 115 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
115
Dung lượng
2,82 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Phạm Trọng Lâm NGHIÊN CỨU LÍ THUYẾT VỀ TƯƠNG TÁC GIỮA VEGFR-2 VÀ LENVATINIB BẰNG PHƯƠNG PHÁP MÔ PHỎNG ĐỘNG LỰC HỌC PHÂN TỬ LUẬN VĂN THẠC SĨ KHOA HỌC Hà Nội - 2017 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Phạm Trọng Lâm NGHIÊN CỨU LÍ THUYẾT VỀ TƯƠNG TÁC GIỮA VEGFR-2 VÀ LENVATINIB BẰNG PHƯƠNG PHÁP MÔ PHỎNG ĐỘNG LỰC HỌC PHÂN TỬ Chuyên ngành: Hóa lý Hóa lý thuyết Mã số: 60440119 LUẬN VĂN THẠC SĨ KHOA HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS LÊ KIM LONG TS NGUYỄN HỌA MI Hà Nội - 2017 LỜI CẢM ƠN Trước tiên xin bày tỏ lòng biết ơn chân thành đến PGS TS Lê Kim Long TS Nguyễn Họa Mi - Cán Trung tâm Ứng dụng Tin học Hóa học, Khoa Hóa học, trường Đại học Khoa học Tự nhiên Thầy Lê Kim Long người gợi ý chấp nhận đề xuất đề tài nghiên cứu Thầy tạo điều kiện thuận lợi giúp chủ động nghiên cứu Cô Nguyễn Họa Mi người trực tiếp hướng dẫn góp ý suốt q trình tơi học tập nghiên cứu lĩnh vực Hóa học tính tốn Khoa Hóa học Cô người động viên gặp khó khăn, căng thẳng sống nghiên cứu Tôi xin gửi lời cảm ơn sâu sắc đến GS TS Lâm Ngọc Thiềm, người thầy có chia sẻ, động viên để giúp tơi có thêm động lực hồn thành luận văn Tôi xin trân trọng cảm ơn thầy giáo, cô giáo, cán Khoa Hóa học, trường Đại học Khoa học Tự nhiên - ĐHQGHN truyền đạt kinh nghiệm góp ý quý báu suốt thời gian học tập nghiên cứu khoa Cuối cùng, xin trân trọng cảm ơn hỗ trợ đề tài cấp Đại học Quốc gia Hà Nội, mã số QG.17.37 trình nghiên cứu Hà Nội, ngày tháng năm 2017 Học viên Phạm Trọng Lâm Danh mục hình Trang Hình Cơ chế chung trình kích thích hình thành mạch máu tế bào ung thư vị trí tác động thuốc lenvatinib 15 Hình Cấu trúc 3D phức hợp VEGFR-2–lenvatinib 17 Hình Nhiệt độ bước cân NVT 33 Hình Áp suất bước cân NPT 34 Hình Tương tác lenvatinib (LEV) protein cấu trúc X-Ray 36 Hình Tương tác lenvatinib (LEV) protein cấu trúc bổ sung tham số trường lực 38 Hình Tương tác lenvatinib (LEV) protein cấu trúc cân nhiệt độ áp suất 39 Hình Tương tác lenvatinib (LEV) protein cấu trúc chiếm trọng số tồn lớn 100 ns MD 40 Hình Tương tác LEV protein cấu trúc chiếm trọng số tồn lớn 100 ns MD thể Pymol 42 Hình 10 Số liên kết hidro lenvatinib protein theo thời gian 43 Hình 11 RMSD mạch protein phức hợp với lenvatinib (3WZD) sorafenib (3WZE) 44 Hình 12 RMSD lenvatinib (LEV) sorafenib (SOR) 45 Hình 13 Root mean square fluctuation (RMSF) residue phức hợp 3WZD 47 Hình 14 Root mean square fluctuation (RMSF) residue phức hợp 3WZE 48 Hình 15 Năng lượng tự liên kết phức hợp 3WZD 3WZE, tính theo g_mmpbsa 49 Hình 16 Năng lượng tự liên kết ligand protein phức hợp 3WZD 3WZE tính theo mơ hình LIE 54 Hình 17 Chu trình nhiệt động lực học dùng để tính tốn đóng góp entropy vào q trình tạo phức hợp 3WZD 3WZE 56 Hình 18 Năng lượng tự liên kết phức hợp 3WZD, 3WZE, 4AGD, tính theo g_mmpbsa 60 Hình 19 Sự hội tụ trình cực tiểu lượng 74 Hình 20 Sự dao động nhiệt độ cân NVT 76 Hình 21 Sự dao động áp suất trình cân NPT 78 Hình 22 Sự dao động mật độ 79 Hình 23 Sự thay đổi RMSD mô 81 Hình 24 Sự thay đổi Rg mơ 82 Danh mục bảng Trang Bảng Tham số tương tác động học VEGFR-2 số loại thuốc tương tự 16 Bảng Các thành phần lượng liên kết phức hợp 3WZD 3WZE thu từ mô MD kéo dài 100 ns 52 Bảng Các thành phần lượng liên kết phức hợp 3WZD, 3WZE, 4AGD thu từ mô MD kéo dài 10 ns 59 Danh mục kí hiệu viết tắt 3WZD Phức hợp VEGFR-2–lenvatinib 3WZE Phức hợp VEGFR-2–sorafenib 4AGD Phức hợp VEGFR-2–sunitinib EM Energy Minimization FDA US Food and Drug Administration FEP Free energy perturbation LEV Lenvatinib LIE Linear Interaction Energy LINCS LINear Constraint Solver MD Molecular Dynamics MM Molecular Mechanics NPT Constatn number of particles, pressure and temperature ensemble NVT Constant number of particles, volume and temperature ensemble PBSA Poisson-Boltzmann Surface Area PDB Protein Data Bank RMSD Root Mean Square Deviation RMSF Root Mean Square Fluctuation SASA Solven accessible surface area SMD Steering Molecular Dynamics SOR Sorafenib SPC Simple Point Charge TI Thermodynamic Integration VEGFR-2 Vascular Endothelial Growth Factor Receptor type Mục lục Trang MỞ ĐẦU 1 TỔNG QUAN 1.1 Tổng quan Hóa học tính tốn 1.2 Mô động lực phân tử (Molecular Dynamic Simulations) 1.3 Thuật tốn mơ động lực phân tử 1.3.1 Thuật tốn tồn cục 1.3.2 Một số thuật toán tiêu biểu MD ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 14 2.1 ĐỐI TƯỢNG NGHIÊN CỨU 14 2.2 PHƯƠNG PHÁP NGHIÊN CỨU 19 2.2.1 Phương pháp thực tính tốn MD 19 2.2.2 Các bước chuẩn bị tệp đầu vào 20 KẾT QUẢ VÀ THẢO LUẬN 32 3.1 Kết tính tốn cân nhiệt độ áp suất 32 3.2 Các tương tác chủ yếu lenvatinib protein 35 3.3 Sự dao động khung protein ligand 41 3.3.1 RMSD 41 3.3.2 3.4 RMSF 46 Năng lượng tự liên kết chưa bao gồm đóng góp entropy 46 3.4.1 Mơ hình MM-PBSA 46 3.4.2 Mơ hình lượng tương tác bậc - LIE 53 3.5 Năng lượng tự liên kết bao gồm đóng góp entropy 55 3.6 Năng lượng tự liên kết rút ngắn thời gian mô 58 KẾT LUẬN 63 TÀI LIỆU THAM KHẢO 64 Tiếng Việt 64 Tiếng Anh 65 Phụ lục A Các bước mô theo MD 68 A.1 Tổ chức thư mục 69 A.2 Xây dựng hệ mô 70 A.2.1 Protein 70 A.2.2 Ligand 70 A.2.3 Phức hợp protein-ligand 71 A.2.4 Định nghĩa ô mạng đơn vị thêm dung môi 71 A.2.5 Thêm ion 72 A.3 Cực tiểu lượng - EM 73 A.3.1 Cân 74 A.3.2 Cân NVT 76 A.3.3 Cân NPT 77 A.4 Thực tính tốn MD 79 A.5 Thực phân tích kết 80 A.5.1 Liên kết hidro protein-ligand 80 A.5.2 Năng lượng tương tác van der Waals tĩnh điện 80 A.5.3 RMSD 81 A.5.4 Bán kính hồi chuyển - Radius of gyration Rg 81 Phụ lục B Một số vấn đề cịn tồn q trình thực nghiên cứu 83 Phụ lục C Một số kinh nghiệm trình thực đề tài 85 Phụ lục D Một số mã nguồn sử dụng phân tích kết vẽ đồ thị 86 D.1 Chuyển file PS sang PNG 86 D.2 Mã nguồn cho Hình 87 D.3 Mã nguồn cho Hình 89 D.4 Mã nguồn cho Hình 11 91 D.5 Mã nguồn cho Hình 12 93 D.6 Mã nguồn cho Hình 13 95 D.7 Mã nguồn cho Hình 14 97 D.8 Mã nguồn cho Hình 15 99 D.9 Mã nguồn cho Hình 16 101 D.10 Mã nguồn cho Hình 18 103 D.4 Mã nguồn cho Hình 11 # -*- coding: utf-8 -*""" Change font size according to latex font size requirements Change fig_width_pt and scale in newfig(scale) for desired documentclass If label texts missing then change golden_mean """ # must load pyplot AFTER rcParams.update import numpy as np import matplotlib as mpl mpl.use('pgf') scale=1.3 def figsize(scale): fig_width_pt = 483.69687 # Get this from LaTeX using \the\textwidth inches_per_pt = 1.0/72.27 # Convert pt to inch golden_mean = (np.sqrt(5.0)-1.0)/2.0 # Aesthetic ratio (you could change this) fig_width = fig_width_pt*inches_per_pt*scale # width in inches # golden_mean = 0.75 #Change to matplotlib default ratio fig_height = fig_width*golden_mean # height in inches fig_size = [fig_width,fig_height] return fig_size pgf_with_latex = { # setup matplotlib to use latex for output "pgf.texsystem": "pdflatex", # change this if using xetex or lautex "text.usetex": True, # use LaTeX to write all text "font.family": "serif", 'mathtext.fontset':'custom', 'mathtext.default' : 'sf', # use 'rm' if serif font is desired "font.serif": [], # blank entries should cause plots to inherit fonts from the document "font.sans-serif": [], "font.monospace": [], "axes.labelsize": 13, # LaTeX default is 10pt font "font.size": 13, "legend.fontsize": 13, # Make the legend/label fonts a little smaller "xtick.labelsize": 13, "ytick.labelsize": 13, "figure.figsize": figsize(0.8), # default fig size of 0.9 textwidth "pgf.preamble": [ # r"\usepackage[utf8x]{inputenc}", # use utf8 fonts becasue your computer can handle it :) r"\usepackage[T1]{fontenc}", # plots will be generated using this preamble r"\usepackage[utf8]{inputenc}", r"\usepackage[utf8]{vietnam}", r"\usepackage{times}", # use times new roman font # r"\usepackage{sfmath}", # use san serif fonts for math but cause inconsistent math font with → latex document r"\usepackage{amsmath}" ] } mpl.rcParams.update(pgf_with_latex) # using comma decimal in axes import locale locale.setlocale(locale.LC_NUMERIC,'vi_VN') mpl_with_VN_locale={'axes.formatter.use_locale':True} mpl.rcParams.update(mpl_with_VN_locale) import pandas as pd import matplotlib.ticker as ticker import matplotlib.pyplot as plt # I make my own newfig and savefig functions def newfig(width): plt.clf() fig = plt.figure(figsize=figsize(width)) ax = fig.add_subplot(111) return fig, ax def savefig(filename): plt.savefig('{}.pgf'.format(filename)) plt.savefig('{}.pdf'.format(filename)) ### END OF FUNCTIONS DEFINITION #### DATA processing filepath1=u'rmsd_backbone_3WZD.xvg' 91 filepath2=u'rmsd_backbone_3WZE.xvg' data1=np.loadtxt(filepath1, dtype=None, #data type guessed from contents comments= ['#','@'] ) data2=np.loadtxt(filepath2,dtype=None,comments=['#','@']) print(data1[0,0],data2[0,0]) #Check if the first lines are loaded correctly fig, ax = newfig(scale) plt.plot(data1[:,0]/1000,data1[:,1],label=u'Bộ khung 3WZD') plt.plot(data1[:,0]/1000,pd.Series(data1[:,1]).rolling(window=100, center=True).mean(),label=u'Đường trung bình') plt.plot(data2[:,0]/1000,data2[:,1],label=u'Bộ khung 3WZE') plt.plot(data2[:,0]/1000,pd.Series(data2[:,1]).rolling(window=100, center=True).mean(),label=u'Đường trung bình') # Use the following line in case vi_VN locale not supported #ax.get_yaxis().set_major_formatter( ticker.FuncFormatter(lambda x, pos: str(x).replace('.',',')) ) # plt.xlabel(u'Thời gian (ns)') plt.ylabel(u'RMSD (nm)') #plt.title(u'3WZD_LEV backbone vs 3WZE_SOR backbone') # Test for math rendering in san serif #plt.title(u'$\Delta G_{binding} \frac{100}{200}$') plt.legend(ncol=2,loc='lower center', # bbox_to_anchor=(0.5, 1.2) ) plt.tight_layout(pad=0.1) # Auto adjust size, text positions while keeping figure declared size plt.savefig(u'rmsd-backbone-3WZD-3WZE.png') #plt.savefig(u'rmsd-backbone-3WZD-3WZE.pgf') plt.show() 92 D.5 Mã nguồn cho Hình 12 # -*- coding: utf-8 -*""" Change font size according to latex font size requirements Change fig_width_pt and scale in newfig(scale) for desired documentclass If label texts missing then change golden_mean """ # must load pyplot AFTER rcParams.update import numpy as np import matplotlib as mpl mpl.use('pgf') scale=1.3 def figsize(scale): fig_width_pt = 483.69687 # Get this from LaTeX using \the\textwidth inches_per_pt = 1.0/72.27 # Convert pt to inch golden_mean = (np.sqrt(5.0)-1.0)/2.0 # Aesthetic ratio (you could change this) fig_width = fig_width_pt*inches_per_pt*scale # width in inches # golden_mean = 0.75 #Change to matplotlib default ratio fig_height = fig_width*golden_mean # height in inches fig_size = [fig_width,fig_height] return fig_size pgf_with_latex = { # setup matplotlib to use latex for output "pgf.texsystem": "pdflatex", # change this if using xetex or lautex "text.usetex": True, # use LaTeX to write all text "font.family": "serif", 'mathtext.fontset':'custom', 'mathtext.default' : 'sf', # use 'rm' if serif font is desired "font.serif": [], # blank entries should cause plots to inherit fonts from the document "font.sans-serif": [], "font.monospace": [], "axes.labelsize": 13, # LaTeX default is 10pt font "font.size": 13, "legend.fontsize": 13, # Make the legend/label fonts a little smaller "xtick.labelsize": 13, "ytick.labelsize": 13, "figure.figsize": figsize(0.8), # default fig size of 0.9 textwidth "pgf.preamble": [ # r"\usepackage[utf8x]{inputenc}", # use utf8 fonts becasue your computer can handle it :) r"\usepackage[T1]{fontenc}", # plots will be generated using this preamble r"\usepackage[utf8]{inputenc}", r"\usepackage[utf8]{vietnam}", r"\usepackage{times}", # use times new roman font # r"\usepackage{sfmath}", # use san serif fonts for math but cause inconsistent math font with → latex document r"\usepackage{amsmath}" ] } mpl.rcParams.update(pgf_with_latex) # using comma decimal in axes import locale locale.setlocale(locale.LC_NUMERIC,'vi_VN') mpl_with_VN_locale={'axes.formatter.use_locale':True} mpl.rcParams.update(mpl_with_VN_locale) import pandas as pd import matplotlib.ticker as ticker import matplotlib.pyplot as plt # I make my own newfig and savefig functions def newfig(width): plt.clf() fig = plt.figure(figsize=figsize(width)) ax1 = fig.add_subplot(211) ax2 = fig.add_subplot(212) return fig, ax1, ax2 def savefig(filename): plt.savefig('{}.pgf'.format(filename)) plt.savefig('{}.pdf'.format(filename)) ### END OF FUNCTIONS DEFINITION #### DATA processing 93 filepath1=u'rmsd_LEV.xvg' filepath2=u'rmsd_SOR.xvg' data1=np.loadtxt(filepath1, dtype=None, #data type guessed from contents comments= ['#','@'] ) data2=np.loadtxt(filepath2,dtype=None,comments=['#','@']) print(data1[0,0],data2[0,0]) #Check if the first lines are loaded correctly fig, ax1, ax2 = newfig(scale) ax1.plot(data1[:,0]/1000,data1[:,1],label=u'Lenvatinib',alpha=0.6,color='blue') ax1.plot(data1[:,0]/1000,pd.Series(data1[:,1]).rolling(window=100, center=True).mean(),label=u'Đường trung bình LEV',alpha=0.6,color='red') ax1.legend(ncol=2,loc='lower center') ax2.plot(data2[:,0]/1000,data2[:,1],label=u'Sorafenib',alpha=0.6,color='green') ax2.plot(data2[:,0]/1000,pd.Series(data2[:,1]).rolling(window=100, center=True).mean(),label=u'Đường trung bình SOR',alpha=0.6,color='black') # Use the following line in case vi_VN locale not supported #ax.get_yaxis().set_major_formatter( ticker.FuncFormatter(lambda x, pos: str(x).replace('.',',')) ) # plt.xlabel(u'Thời gian (ns)') plt.ylabel(u'RMSD (nm)') #plt.title(u'3WZD_LEV backbone vs 3WZE_SOR backbone') # Test for math rendering in san serif #plt.title(u'$\Delta G_{binding} \frac{100}{200}$') plt.legend(ncol=2,loc='lower center', # bbox_to_anchor=(0.5, 1.2) ) plt.tight_layout(pad=0.1) # Auto adjust size, text positions while keeping figure declared size plt.savefig(u'rmsd-ligand-LEV-SOR.png') #plt.savefig(u'rmsd-backbone-3WZD-3WZE.pgf') plt.show() 94 D.6 Mã nguồn cho Hình 13 # -*- coding: utf-8 -*""" Change font size according to latex font size requirements Change fig_width_pt and scale in newfig(scale) for desired documentclass If label texts missing then change golden_mean """ # must load pyplot AFTER rcParams.update import numpy as np import matplotlib as mpl mpl.use('pgf') scale=1.3 def figsize(scale): fig_width_pt = 483.69687 # Get this from LaTeX using \the\textwidth inches_per_pt = 1.0/72.27 # Convert pt to inch golden_mean = (np.sqrt(5.0)-1.0)/2.0 # Aesthetic ratio (you could change this) fig_width = fig_width_pt*inches_per_pt*scale # width in inches # golden_mean = 0.75 #Change to matplotlib default ratio fig_height = fig_width*golden_mean # height in inches fig_size = [fig_width,fig_height] return fig_size pgf_with_latex = { # setup matplotlib to use latex for output "pgf.texsystem": "pdflatex", # change this if using xetex or lautex "text.usetex": True, # use LaTeX to write all text "font.family": "serif", 'mathtext.fontset':'custom', 'mathtext.default' : 'sf', # use 'rm' if serif font is desired "font.serif": [], # blank entries should cause plots to inherit fonts from the document "font.sans-serif": [], "font.monospace": [], "axes.labelsize": 13, # LaTeX default is 10pt font "font.size": 13, "legend.fontsize": 13, # Make the legend/label fonts a little smaller "xtick.labelsize": 13, "ytick.labelsize": 13, "figure.figsize": figsize(0.8), # default fig size of 0.9 textwidth "pgf.preamble": [ # r"\usepackage[utf8x]{inputenc}", # use utf8 fonts becasue your computer can handle it :) r"\usepackage[T1]{fontenc}", # plots will be generated using this preamble r"\usepackage[utf8]{inputenc}", r"\usepackage[utf8]{vietnam}", r"\usepackage{times}", # use times new roman font # r"\usepackage{sfmath}", # use san serif fonts for math but cause inconsistent math font with → latex document r"\usepackage{amsmath}" ] } mpl.rcParams.update(pgf_with_latex) # using comma decimal in axes import locale locale.setlocale(locale.LC_NUMERIC,'vi_VN') mpl_with_VN_locale={'axes.formatter.use_locale':True} mpl.rcParams.update(mpl_with_VN_locale) import pandas as pd import matplotlib.ticker as ticker import matplotlib.pyplot as plt # I make my own newfig and savefig functions def newfig(width): plt.clf() fig = plt.figure(figsize=figsize(width)) ax = fig.add_subplot(111) return fig, ax def savefig(filename): plt.savefig('{}.pgf'.format(filename)) plt.savefig('{}.pdf'.format(filename)) ### END OF FUNCTIONS DEFINITION #### DATA processing filepath1=u'rmsf_3WZD.xvg' 95 data1=np.loadtxt(filepath1, dtype=None, #data type guessed from contents comments= ['#','@'] ) print(data1[0,0]) #Check if the first lines are loaded correctly fig, ax = newfig(scale) plt.plot(data1[:,0],data1[:,1],label=u'RMS fluctuation 3WZD') # can so sanh voi file add_missing_residue cua modeller, nho tru di vi index cua python bat dau tu # gia tri cuoi ham range se bi bo qua, nen dung lenh print(position_index) de xac nhan lai position_index=list(range(0,6)) position_index=position_index+list(range(28,32)) position_index=position_index+list(range(187,203)) position_index=position_index+list(range(304,309)) # print(position_index) plt.scatter(data1[position_index,0], data1[position_index,1], color='red', label=u'Các residue thêm vào modeller') #plt.annotate(u'arg gly ala phe',xy=(30,0.25),xytext=(100,0.7), # color='red', # arrowprops=dict(facecolor='black', shrink=0.05)) # Use the following line in case vi_VN locale not supported #ax.get_yaxis().set_major_formatter( ticker.FuncFormatter(lambda x, pos: str(x).replace('.',',')) ) # plt.xlabel(u'Số thứ tự residue (đánh số 1)') plt.ylabel(u'RMSF (nm)') #plt.title(u'3WZD_LEV backbone vs 3WZE_SOR backbone') # Test for math rendering in san serif #plt.title(u'$\Delta G_{binding} \frac{100}{200}$') plt.legend(ncol=1,loc='upper center', # bbox_to_anchor=(0.5, 1.2) ) plt.tight_layout(pad=0.1) # Auto adjust size, text positions while keeping figure declared size plt.savefig(u'rmsf-3WZD.png') #plt.savefig(u'rmsd-backbone-3WZD-3WZE.pgf') plt.show() 96 D.7 Mã nguồn cho Hình 14 # -*- coding: utf-8 -*""" Change font size according to latex font size requirements Change fig_width_pt and scale in newfig(scale) for desired documentclass If label texts missing then change golden_mean """ # must load pyplot AFTER rcParams.update import numpy as np import matplotlib as mpl mpl.use('pgf') scale=1.3 def figsize(scale): fig_width_pt = 483.69687 # Get this from LaTeX using \the\textwidth inches_per_pt = 1.0/72.27 # Convert pt to inch golden_mean = (np.sqrt(5.0)-1.0)/2.0 # Aesthetic ratio (you could change this) fig_width = fig_width_pt*inches_per_pt*scale # width in inches # golden_mean = 0.75 #Change to matplotlib default ratio fig_height = fig_width*golden_mean # height in inches fig_size = [fig_width,fig_height] return fig_size pgf_with_latex = { # setup matplotlib to use latex for output "pgf.texsystem": "pdflatex", # change this if using xetex or lautex "text.usetex": True, # use LaTeX to write all text "font.family": "serif", 'mathtext.fontset':'custom', 'mathtext.default' : 'sf', # use 'rm' if serif font is desired "font.serif": [], # blank entries should cause plots to inherit fonts from the document "font.sans-serif": [], "font.monospace": [], "axes.labelsize": 13, # LaTeX default is 10pt font "font.size": 13, "legend.fontsize": 13, # Make the legend/label fonts a little smaller "xtick.labelsize": 13, "ytick.labelsize": 13, "figure.figsize": figsize(0.8), # default fig size of 0.9 textwidth "pgf.preamble": [ # r"\usepackage[utf8x]{inputenc}", # use utf8 fonts becasue your computer can handle it :) r"\usepackage[T1]{fontenc}", # plots will be generated using this preamble r"\usepackage[utf8]{inputenc}", r"\usepackage[utf8]{vietnam}", r"\usepackage{times}", # use times new roman font # r"\usepackage{sfmath}", # use san serif fonts for math but cause inconsistent math font with → latex document r"\usepackage{amsmath}" ] } mpl.rcParams.update(pgf_with_latex) # using comma decimal in axes import locale locale.setlocale(locale.LC_NUMERIC,'vi_VN') mpl_with_VN_locale={'axes.formatter.use_locale':True} mpl.rcParams.update(mpl_with_VN_locale) import pandas as pd import matplotlib.ticker as ticker import matplotlib.pyplot as plt # I make my own newfig and savefig functions def newfig(width): plt.clf() fig = plt.figure(figsize=figsize(width)) ax = fig.add_subplot(111) return fig, ax def savefig(filename): plt.savefig('{}.pgf'.format(filename)) plt.savefig('{}.pdf'.format(filename)) ### END OF FUNCTIONS DEFINITION #### DATA processing filepath1=u'rmsf_3WZE.xvg' 97 data1=np.loadtxt(filepath1, dtype=None, #data type guessed from contents comments= ['#','@'] ) print(data1[0,0]) #Check if the first lines are loaded correctly fig, ax = newfig(scale) plt.plot(data1[:,0],data1[:,1],label=u'RMS fluctuation 3WZE') # can so sanh voi file add_missing_residue cua modeller, nho tru di vi index cua python bat dau tu # gia tri cuoi ham range se bi bo qua, nen dung lenh print(position_index) de xac nhan lai position_index=list(range(0,6)) position_index=position_index+list(range(28,32)) position_index=position_index+list(range(187,203)) position_index=position_index+list(range(304,309)) # print(position_index) plt.scatter(data1[position_index,0], data1[position_index,1], color='red', label=u'Các residue thêm vào modeller') #plt.annotate(u'arg gly ala phe',xy=(30,0.25),xytext=(100,0.7), # color='red', # arrowprops=dict(facecolor='black', shrink=0.05)) # Use the following line in case vi_VN locale not supported #ax.get_yaxis().set_major_formatter( ticker.FuncFormatter(lambda x, pos: str(x).replace('.',',')) ) # plt.xlabel(u'Số thứ tự residue (đánh số 1)') plt.ylabel(u'RMSF (nm)') #plt.title(u'3WZD_LEV backbone vs 3WZE_SOR backbone') # Test for math rendering in san serif #plt.title(u'$\Delta G_{binding} \frac{100}{200}$') plt.legend(ncol=1,loc='upper center', # bbox_to_anchor=(0.5, 1.2) ) plt.tight_layout(pad=0.1) # Auto adjust size, text positions while keeping figure declared size plt.savefig(u'rmsf-3WZE.png') #plt.savefig(u'rmsd-backbone-3WZD-3WZE.pgf') plt.show() 98 D.8 Mã nguồn cho Hình 15 # -*- coding: utf-8 -*""" Change font size according to latex font size requirements Change fig_width_pt and scale in newfig(scale) for desired documentclass If label texts missing then change golden_mean """ # must load pyplot AFTER rcParams.update import numpy as np import matplotlib as mpl mpl.use('pgf') scale=1.3 def figsize(scale): fig_width_pt = 483.69687 # Get this from LaTeX using \the\textwidth inches_per_pt = 1.0/72.27 # Convert pt to inch golden_mean = (np.sqrt(5.0)-1.0)/2.0 # Aesthetic ratio (you could change this) fig_width = fig_width_pt*inches_per_pt*scale # width in inches # golden_mean = 0.75 #Change to matplotlib default ratio fig_height = fig_width*golden_mean # height in inches fig_size = [fig_width,fig_height] return fig_size pgf_with_latex = { # setup matplotlib to use latex for output "pgf.texsystem": "pdflatex", # change this if using xetex or lautex "text.usetex": True, # use LaTeX to write all text "font.family": "serif", 'mathtext.fontset':'custom', # 'mathtext.default' : 'sf', # use 'rm' if serif font is desired "font.serif": [], # blank entries should cause plots to inherit fonts from the document "font.sans-serif": [], "font.monospace": [], "axes.labelsize": 13, # LaTeX default is 10pt font "font.size": 13, "legend.fontsize": 13, # Make the legend/label fonts a little smaller "xtick.labelsize": 13, "ytick.labelsize": 13, "figure.figsize": figsize(0.9), # default fig size of 0.9 textwidth "pgf.preamble": [ # r"\usepackage[utf8x]{inputenc}", # use utf8 fonts becasue your computer can handle it :) r"\usepackage[T1]{fontenc}", # plots will be generated using this preamble r"\usepackage[utf8]{inputenc}", r"\usepackage[utf8]{vietnam}", r"\usepackage{times}", # use times new roman font # r"\usepackage{sfmath}", # use san serif fonts for math but cause inconsistent math font with → latex document r"\usepackage{amsmath}" ] } mpl.rcParams.update(pgf_with_latex) # using comma decimal in axes import locale locale.setlocale(locale.LC_NUMERIC,'vi_VN') mpl_with_VN_locale={'axes.formatter.use_locale':True} mpl.rcParams.update(mpl_with_VN_locale) import pandas as pd import matplotlib.ticker as ticker import matplotlib.pyplot as plt # I make my own newfig and savefig functions def newfig(width): plt.clf() fig = plt.figure(figsize=figsize(width)) ax = fig.add_subplot(111) return fig, ax def savefig(filename): plt.savefig('{}.pgf'.format(filename)) plt.savefig('{}.pdf'.format(filename)) ### END OF FUNCTIONS DEFINITION #### DATA processing TIME_index=0 99 E_VdW_mm_protein=1 E_Elec_mm_protein=2 E_Pol_protein=3 E_Apol_protein=4 E_VdW_mm_ligand=5 E_Elec_mm_ligand=6 E_Pol_ligand=7 E_Apol_ligand=8 E_VdW_mm_complex=9 E_Elec_mm_complex=10 E_Pol_complex=11 E_Apol_complex=12 Delta_E_mm=13 Delta_E_Pol=14 Delta_E_Apol=15 Delta_E_binding=16 def graph_title(data_index): if data_index==E_VdW_mm_protein: return u'E_VdW_MM_protein' if data_index==E_Elec_mm_protein: return u'E_Elec_mm_protein' if data_index==E_Pol_protein: return u'E_Pol_protein' if data_index==E_Apol_protein: return u'E_Apol_protein' if if if if data_index==E_VdW_mm_ligand: return u'E_VdW_mm_ligand' data_index==E_Elec_mm_ligand: return u'E_Elec_mm_ligand' data_index==E_Pol_ligand: return u'E_Pol_ligand' data_index==E_Apol_ligand: return u'E_Apol_ligand' if if if if data_index==E_VdW_mm_complex: return u'VdW_mm_complex' data_index==E_Elec_mm_complex: return u'E_Elec_mm_complex' data_index==E_Pol_complex: return u'E_Pol_complex' data_index==E_Apol_complex: return u'E_Apol_complex' if if if if data_index==Delta_E_mm: return u'Delta_E_mm' data_index==Delta_E_Pol: return u'Delta_E_Pol' data_index==Delta_E_Apol: return u'Delta_E_Apol' data_index==Delta_E_binding: return u'$\Delta$' + '$E_{binding}$' filepath1=u'full_energy_3WZD.dat' filepath2=u'full_energy_3WZE.dat' data1=np.loadtxt(filepath1, dtype=None, #data type guessed from contents comments= ['#','@'] ) data2=np.loadtxt(filepath2,dtype=None,comments=['#','@']) print(data1[0,0],data2[0,0]) #Check if the first lines are loaded correctly data_ind=Delta_E_binding x1=data1[:,0]/1000 y1=data1[:,data_ind] x2=data2[:,0]/1000 y2=data2[:,data_ind] fig, ax = newfig(scale) plt.plot(x1,y1,label=u'3WZD') plt.plot(x1,pd.Series(y1).rolling(window=100,center=True).mean(), label=u'Đường trung bình') plt.plot(x2,y2,label='3WZE') plt.plot(x2,pd.Series(y2).rolling(window=100,center=True).mean(), label=u'Đường trung bình') plt.xlabel(u'Thời gian (ns)') plt.ylabel(u'$\Delta G_{binding}$ (kJ/mol)') #plt.title(graph_title(data_ind)) #plt.title(u'$\Delta$' + '$G_{binding}$') plt.legend(ncol=2,loc='upper center', # bbox_to_anchor=(0.5, 1.2) ) plt.tight_layout(pad=0.1) # Auto adjust size, text positions while keeping figure declared size plt.savefig(u'gmmpbsa-3WZD-3WZE.png') plt.show() 100 D.9 Mã nguồn cho Hình 16 # -*- coding: utf-8 -*""" Change font size according to latex font size requirements Change fig_width_pt and scale in newfig(scale) for desired documentclass If label texts missing then change golden_mean """ # must load pyplot AFTER rcParams.update import numpy as np import matplotlib as mpl mpl.use('pgf') scale=1.3 def figsize(scale): fig_width_pt = 483.69687 # Get this from LaTeX using \the\textwidth inches_per_pt = 1.0/72.27 # Convert pt to inch golden_mean = (np.sqrt(5.0)-1.0)/2.0 # Aesthetic ratio (you could change this) fig_width = fig_width_pt*inches_per_pt*scale # width in inches # golden_mean = 0.75 #Change to matplotlib default ratio fig_height = fig_width*golden_mean # height in inches fig_size = [fig_width,fig_height] return fig_size pgf_with_latex = { # setup matplotlib to use latex for output "pgf.texsystem": "pdflatex", # change this if using xetex or lautex "text.usetex": True, # use LaTeX to write all text "font.family": "serif", 'mathtext.fontset':'custom', 'mathtext.default' : 'sf', # use 'rm' if serif font is desired "font.serif": [], # blank entries should cause plots to inherit fonts from the document "font.sans-serif": [], "font.monospace": [], "axes.labelsize": 13, # LaTeX default is 10pt font "font.size": 13, "legend.fontsize": 13, # Make the legend/label fonts a little smaller "xtick.labelsize": 13, "ytick.labelsize": 13, "figure.figsize": figsize(0.8), # default fig size of 0.9 textwidth "pgf.preamble": [ # r"\usepackage[utf8x]{inputenc}", # use utf8 fonts becasue your computer can handle it :) r"\usepackage[T1]{fontenc}", # plots will be generated using this preamble r"\usepackage[utf8]{inputenc}", r"\usepackage[utf8]{vietnam}", r"\usepackage{times}", # use times new roman font # r"\usepackage{sfmath}", # use san serif fonts for math but cause inconsistent math font with → latex document r"\usepackage{amsmath}" ] } mpl.rcParams.update(pgf_with_latex) # using comma decimal in axes import locale locale.setlocale(locale.LC_NUMERIC,'vi_VN') mpl_with_VN_locale={'axes.formatter.use_locale':True} mpl.rcParams.update(mpl_with_VN_locale) import pandas as pd import matplotlib.ticker as ticker import matplotlib.pyplot as plt # I make my own newfig and savefig functions def newfig(width): plt.clf() fig = plt.figure(figsize=figsize(width)) ax = fig.add_subplot(111) return fig, ax def savefig(filename): plt.savefig('{}.pgf'.format(filename)) plt.savefig('{}.pdf'.format(filename)) ### END OF FUNCTIONS DEFINITION #### DATA processing filepath1=u'lie_LEV.xvg' 101 filepath2=u'lie_SOR.xvg' data1=np.loadtxt(filepath1, dtype=None, #data type guessed from contents comments= ['#','@'] ) data2=np.loadtxt(filepath2,dtype=None,comments=['#','@']) print(data1[0,0],data2[0,0]) #Check if the first lines are loaded correctly fig, ax = newfig(scale) plt.plot(data1[:,0]/1000,data1[:,1],label=u'3WZD',alpha=0.5) plt.plot(data1[:,0]/1000,pd.Series(data1[:,1]).rolling(window=100, center=True).mean(),label=u'Đường trung bình 3WZD') plt.plot(data2[:,0]/1000,data2[:,1],label=u'3WZE',alpha=0.5) plt.plot(data2[:,0]/1000,pd.Series(data2[:,1]).rolling(window=100, center=True).mean(),label=u'Đường trung bình 3WZE') # Use the following line in case vi_VN locale not supported #ax.get_yaxis().set_major_formatter( ticker.FuncFormatter(lambda x, pos: str(x).replace('.',',')) ) # plt.xlabel(u'Thời gian (ns)') plt.ylabel(u'$\Delta G_{binding}$ (kJ/mol)') #plt.title('DGbind 3WZD 3WZE') plt.legend(ncol=2,loc='lower center', # bbox_to_anchor=(0.5, 1.2) ) plt.tight_layout(pad=0.1) # Auto adjust size, text positions while keeping figure declared size plt.savefig(u'LIE-3WZD-3WZE.png') #plt.savefig(u'rmsd-backbone-3WZD-3WZE.pgf') plt.show() 102 D.10 Mã nguồn cho Hình 18 # -*- coding: utf-8 -*""" Change font size according to latex font size requirements Change fig_width_pt and scale in newfig(scale) for desired documentclass If label texts missing then change golden_mean """ # must load pyplot AFTER rcParams.update import numpy as np import matplotlib as mpl mpl.use('pgf') scale=1.3 def figsize(scale): fig_width_pt = 483.69687 # Get this from LaTeX using \the\textwidth inches_per_pt = 1.0/72.27 # Convert pt to inch golden_mean = (np.sqrt(5.0)-1.0)/2.0 # Aesthetic ratio (you could change this) fig_width = fig_width_pt*inches_per_pt*scale # width in inches # golden_mean = 0.75 #Change to matplotlib default ratio fig_height = fig_width*golden_mean # height in inches fig_size = [fig_width,fig_height] return fig_size pgf_with_latex = { # setup matplotlib to use latex for output "pgf.texsystem": "pdflatex", # change this if using xetex or lautex "text.usetex": True, # use LaTeX to write all text "font.family": "serif", 'mathtext.fontset':'custom', # 'mathtext.default' : 'sf', # use 'rm' if serif font is desired "font.serif": [], # blank entries should cause plots to inherit fonts from the document "font.sans-serif": [], "font.monospace": [], "axes.labelsize": 13, # LaTeX default is 10pt font "font.size": 13, "legend.fontsize": 13, # Make the legend/label fonts a little smaller "xtick.labelsize": 13, "ytick.labelsize": 13, "figure.figsize": figsize(0.9), # default fig size of 0.9 textwidth "pgf.preamble": [ # r"\usepackage[utf8x]{inputenc}", # use utf8 fonts becasue your computer can handle it :) r"\usepackage[T1]{fontenc}", # plots will be generated using this preamble r"\usepackage[utf8]{inputenc}", r"\usepackage[utf8]{vietnam}", r"\usepackage{times}", # use times new roman font # r"\usepackage{sfmath}", # use san serif fonts for math but cause inconsistent math font with → latex document r"\usepackage{amsmath}" ] } mpl.rcParams.update(pgf_with_latex) # using comma decimal in axes import locale locale.setlocale(locale.LC_NUMERIC,'vi_VN') mpl_with_VN_locale={'axes.formatter.use_locale':True} mpl.rcParams.update(mpl_with_VN_locale) import pandas as pd import matplotlib.ticker as ticker import matplotlib.pyplot as plt # I make my own newfig and savefig functions def newfig(width): plt.clf() fig = plt.figure(figsize=figsize(width)) ax = fig.add_subplot(111) return fig, ax def savefig(filename): plt.savefig('{}.pgf'.format(filename)) plt.savefig('{}.pdf'.format(filename)) ### END OF FUNCTIONS DEFINITION #### DATA processing TIME_index=0 103 E_VdW_mm_protein=1 E_Elec_mm_protein=2 E_Pol_protein=3 E_Apol_protein=4 E_VdW_mm_ligand=5 E_Elec_mm_ligand=6 E_Pol_ligand=7 E_Apol_ligand=8 E_VdW_mm_complex=9 E_Elec_mm_complex=10 E_Pol_complex=11 E_Apol_complex=12 Delta_E_mm=13 Delta_E_Pol=14 Delta_E_Apol=15 Delta_E_binding=16 def graph_title(data_index): if data_index==E_VdW_mm_protein: return u'E_VdW_MM_protein' if data_index==E_Elec_mm_protein: return u'E_Elec_mm_protein' if data_index==E_Pol_protein: return u'E_Pol_protein' if data_index==E_Apol_protein: return u'E_Apol_protein' if if if if data_index==E_VdW_mm_ligand: return u'E_VdW_mm_ligand' data_index==E_Elec_mm_ligand: return u'E_Elec_mm_ligand' data_index==E_Pol_ligand: return u'E_Pol_ligand' data_index==E_Apol_ligand: return u'E_Apol_ligand' if if if if data_index==E_VdW_mm_complex: return u'VdW_mm_complex' data_index==E_Elec_mm_complex: return u'E_Elec_mm_complex' data_index==E_Pol_complex: return u'E_Pol_complex' data_index==E_Apol_complex: return u'E_Apol_complex' if if if if data_index==Delta_E_mm: return u'Delta_E_mm' data_index==Delta_E_Pol: return u'Delta_E_Pol' data_index==Delta_E_Apol: return u'Delta_E_Apol' data_index==Delta_E_binding: return u'$\Delta$' + '$E_{binding}$' filepath1=u'full_energy_3WZD_10ns.dat' filepath2=u'full_energy_3WZE_10ns.dat' filepath3=u'full_energy_4AGD_10ns.dat' data1=np.loadtxt(filepath1, dtype=None, #data type guessed from contents comments= ['#','@'] ) data2=np.loadtxt(filepath2,dtype=None,comments=['#','@']) data3=np.loadtxt(filepath3,dtype=None,comments=['#','@']) print(data1[0,0],data2[0,0],data3[0,0]) #Check if the first lines are loaded correctly data_ind=Delta_E_binding x1=data1[:,0]/1000 y1=data1[:,data_ind] x2=data2[:,0]/1000 y2=data2[:,data_ind] x3=data3[:,0]/1000 y3=data3[:,data_ind] fig, ax = newfig(scale) plt.plot(x1,y1,label=u'3WZD') plt.plot(x1,pd.Series(y1).rolling(window=10,center=True).mean(), label=u'Đường trung bình') plt.plot(x2,y2,label='3WZE') plt.plot(x2,pd.Series(y2).rolling(window=10,center=True).mean(), label=u'Đường trung bình') plt.plot(x3,y3,label='4AGD') plt.plot(x3,pd.Series(y3).rolling(window=10,center=True).mean(), label=u'Đường trung bình') plt.xlabel(u'Thời gian (ns)') plt.ylabel(u'$\Delta G_{binding}$ (kJ/mol)') #plt.title(graph_title(data_ind)) #plt.title(u'$\Delta$' + '$G_{binding}$') plt.legend(ncol=3,loc='upper center', # bbox_to_anchor=(0.5, 1.2) ) 104 plt.tight_layout(pad=0.1) # Auto adjust size, text positions while keeping figure declared size plt.savefig(u'gmmpbsa-3WZD-3WZE-4AGD-10ns.png') plt.show() 105 ... gyration Rg 81 Phụ lục B Một số vấn đề tồn trình thực nghiên cứu 83 Phụ lục C Một số kinh nghiệm trình thực đề tài 85 Phụ lục D Một số mã nguồn sử dụng phân tích kết vẽ đồ thị... dụng phương pháp ab initio Do ta cần sử dụng phương pháp gần đúng, hệ phức tạp thời gian trình quan tâm dài, ta sử dụng nhiều xấp xỉ Tại điểm (sớm nhiều so với mong muốn chúng ta), phương pháp. .. nhiệt độ với hệ số τ Còn phương pháp Nosé-Hoover, hồi phục (có dao động) nhiệt độ thiết lập với chu kì τ Theo phương pháp này, yêu cầu thuật toán điều nhiệt đưa ln vào phương trình chuyển động,