0.1.181
This commit is contained in:
		| @@ -1,7 +1,7 @@ | ||||
| [metadata] | ||||
| # replace with your username: | ||||
| name = guan | ||||
| version = 0.1.179 | ||||
| version = 0.1.181 | ||||
| author = guanjihuan | ||||
| author_email = guanjihuan@163.com | ||||
| description = An open source python package | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| Metadata-Version: 2.4 | ||||
| Name: guan | ||||
| Version: 0.1.179 | ||||
| Version: 0.1.181 | ||||
| Summary: An open source python package | ||||
| Home-page: https://py.guanjihuan.com | ||||
| Author: guanjihuan | ||||
|   | ||||
| @@ -8,14 +8,11 @@ src/guan/Hamiltonian_of_examples.py | ||||
| src/guan/__init__.py | ||||
| src/guan/band_structures_and_wave_functions.py | ||||
| src/guan/basic_functions.py | ||||
| src/guan/custom_classes.py | ||||
| src/guan/data_processing.py | ||||
| src/guan/decorators.py | ||||
| src/guan/density_of_states.py | ||||
| src/guan/deprecated.py | ||||
| src/guan/figure_plotting.py | ||||
| src/guan/file_reading_and_writing.py | ||||
| src/guan/functions_using_objects_of_custom_classes.py | ||||
| src/guan/machine_learning.py | ||||
| src/guan/others.py | ||||
| src/guan/quantum_transport.py | ||||
|   | ||||
| @@ -14,7 +14,4 @@ from .figure_plotting import * | ||||
| from .data_processing import * | ||||
| from .decorators import * | ||||
| from .others import * | ||||
| from .custom_classes import * | ||||
| from .functions_using_objects_of_custom_classes import * | ||||
| from .deprecated import * | ||||
| statistics_of_guan_package() | ||||
| @@ -1,11 +0,0 @@ | ||||
| # Module: custom_classes | ||||
|  | ||||
| # 原子类 | ||||
| class Atom: | ||||
|     def __init__(self, name='atom', index=0, x=0, y=0, z=0, energy=0): | ||||
|         self.name = name | ||||
|         self.index = index | ||||
|         self.x = x | ||||
|         self.y = y | ||||
|         self.z = z | ||||
|         self.energy = energy | ||||
| @@ -11,7 +11,7 @@ def logging_with_day_and_time(content='', filename='time_logging', file_format=' | ||||
|        else: | ||||
|            f2.write(datetime_today+' '+datetime_time+' '+content+'\n') | ||||
|  | ||||
| # 使用该函数获取函数计算时间(秒) | ||||
| # 使用该函数运行某个函数并获取函数计算时间(秒) | ||||
| def timer(function_name, *args, **kwargs): | ||||
|     import time | ||||
|     start = time.time() | ||||
| @@ -20,13 +20,54 @@ def timer(function_name, *args, **kwargs): | ||||
|     print(f"Running time of {function_name.__name__}: {end - start} seconds") | ||||
|     return result | ||||
|  | ||||
| # 使用该函数实现 try except 结构 | ||||
| # 使用该函数运行某个函数并实现 try-except-pass 结构 | ||||
| def try_except(function_name, *args, **kwargs): | ||||
|     try: | ||||
|         return function_name(*args, **kwargs) | ||||
|     except: | ||||
|         pass | ||||
|  | ||||
| # 循环一个参数计算某个函数,并返回计算结果的数组 | ||||
| def loop_calculation_with_one_parameter(function_name, parameter_array): | ||||
|     import numpy as np | ||||
|     result_array = [] | ||||
|     for parameter in parameter_array: | ||||
|         result = function_name(parameter) | ||||
|         result_array.append(result) | ||||
|     result_array = np.array(result_array) | ||||
|     return result_array | ||||
|  | ||||
| # 循环两个参数计算某个函数,并返回计算结果的数组 | ||||
| def loop_calculation_with_two_parameters(function_name, parameter_array_1, parameter_array_2): | ||||
|     import numpy as np | ||||
|     result_array = np.zeros((len(parameter_array_2), len(parameter_array_1))) | ||||
|     i1 = 0 | ||||
|     for parameter_1 in parameter_array_1: | ||||
|         i2 = 0 | ||||
|         for parameter_2 in parameter_array_2: | ||||
|             result = function_name(parameter_1, parameter_2) | ||||
|             result_array[i2, i1] = result | ||||
|             i2 += 1 | ||||
|         i1 += 1 | ||||
|     return result_array | ||||
|  | ||||
| # 循环三个参数计算某个函数,并返回计算结果的数组 | ||||
| def loop_calculation_with_three_parameters(function_name, parameter_array_1, parameter_array_2, parameter_array_3): | ||||
|     import numpy as np | ||||
|     result_array = np.zeros((len(parameter_array_3), len(parameter_array_2), len(parameter_array_1))) | ||||
|     i1 = 0 | ||||
|     for parameter_1 in parameter_array_1: | ||||
|         i2 = 0 | ||||
|         for parameter_2 in parameter_array_2: | ||||
|             i3 = 0 | ||||
|             for parameter_3 in parameter_array_3: | ||||
|                 result = function_name(parameter_1, parameter_2, parameter_3) | ||||
|                 result_array[i3, i2, i1] = result | ||||
|                 i3 += 1 | ||||
|             i2 += 1 | ||||
|         i1 += 1 | ||||
|     return result_array | ||||
|  | ||||
| # 打印数组 | ||||
| def print_array(array, line_break=0): | ||||
|     if line_break == 0: | ||||
|   | ||||
| @@ -1,45 +0,0 @@ | ||||
| # Module: deprecated | ||||
|  | ||||
| def make_sh_file(sh_filename='a', command_line='python a.py', cpu_num=1, task_name='task', cd_dir=0): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.make_sh_file_for_qsub().') | ||||
|     guan.make_sh_file_for_qsub(sh_filename=sh_filename, command_line=command_line, cpu_num=cpu_num, task_name=task_name, cd_dir=cd_dir) | ||||
|  | ||||
| def plot_without_starting_fig(plt, fig, ax, x_array, y_array, xlabel='x', ylabel='y', title='', fontsize=20, style='', y_min=None, y_max=None, linewidth=None, markersize=None, color=None, fontfamily='Times New Roman'): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.plot_without_starting_fig_ax().') | ||||
|     guan.plot_without_starting_fig_ax(plt, fig, ax, x_array, y_array, xlabel=xlabel, ylabel=ylabel, title=title, fontsize=fontsize, style=style, y_min=y_min, y_max=y_max, linewidth=linewidth, markersize=markersize, color=color, fontfamily=fontfamily) | ||||
|  | ||||
| def draw_dots_and_lines_without_starting_fig(plt, fig, ax, coordinate_array, draw_dots=1, draw_lines=1, max_distance=1, line_style='-k', linewidth=1, dot_style='ro', markersize=3): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.draw_dots_and_lines_without_starting_fig_ax().') | ||||
|     guan.draw_dots_and_lines_without_starting_fig_ax(plt, fig, ax, coordinate_array, draw_dots=draw_dots, draw_lines=draw_lines, max_distance=max_distance, line_style=line_style, linewidth=linewidth, dot_style=dot_style, markersize=markersize) | ||||
|  | ||||
| def get_days_of_the_current_month(str_or_datetime='str'): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.get_date_array_of_the_current_month().') | ||||
|     date_array = guan.get_date_array_of_the_current_month(str_or_datetime=str_or_datetime) | ||||
|     return date_array | ||||
|  | ||||
| def get_days_of_the_last_month(str_or_datetime='str'): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.get_date_array_of_the_last_month().') | ||||
|     date_array = guan.get_date_array_of_the_last_month(str_or_datetime=str_or_datetime) | ||||
|     return date_array | ||||
|  | ||||
| def get_days_of_the_month_before_last(str_or_datetime='str'): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.get_date_array_of_the_month_before_last().') | ||||
|     date_array = guan.get_date_array_of_the_month_before_last(str_or_datetime=str_or_datetime) | ||||
|     return date_array | ||||
|  | ||||
| def pdf_to_text(pdf_path): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.pdf_to_text_with_pdfminer3k().') | ||||
|     content = guan.pdf_to_text_with_pdfminer3k(pdf_path) | ||||
|     return content | ||||
|  | ||||
| def statistics_with_day_and_time(content='', filename='time_logging', file_format='.txt'): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.logging_with_day_and_time().') | ||||
|     guan.logging_with_day_and_time(content=content, filename=filename, file_format=file_format) | ||||
| @@ -1,79 +0,0 @@ | ||||
| # Module: functions_using_objects_of_custom_classes | ||||
|  | ||||
| # 将原子对象列表转成多个独立列表 | ||||
| def convert_atom_object_list_to_multiple_lists(atom_object_list): | ||||
|     name_list = [] | ||||
|     index_list = [] | ||||
|     x_list = [] | ||||
|     y_list = [] | ||||
|     z_list = [] | ||||
|     energy_list = [] | ||||
|     for atom_object in atom_object_list: | ||||
|         name_list.append(atom_object.name) | ||||
|         index_list.append(atom_object.index) | ||||
|         x_list.append(atom_object.x) | ||||
|         y_list.append(atom_object.y) | ||||
|         z_list.append(atom_object.z) | ||||
|         energy_list.append(atom_object.energy) | ||||
|     return name_list, index_list, x_list, y_list, z_list, energy_list | ||||
|  | ||||
| # 将原子对象列表转成原子字典列表 | ||||
| def convert_atom_object_list_to_atom_dict_list(atom_object_list): | ||||
|     atom_dict_list = [] | ||||
|     for atom_object in atom_object_list: | ||||
|         atom_dict = { | ||||
|             'name': atom_object.name, | ||||
|             'index': atom_object.index,  | ||||
|             'x': atom_object.x, | ||||
|             'y': atom_object.y, | ||||
|             'z': atom_object.z, | ||||
|             'energy': atom_object.energy, | ||||
|         } | ||||
|         atom_dict_list.append(atom_dict) | ||||
|     return atom_dict_list | ||||
|  | ||||
| # 从原子对象列表中获取 (x, y) 坐标数组 | ||||
| def get_coordinate_array_from_atom_object_list(atom_object_list): | ||||
|     coordinate_array = [] | ||||
|     for atom in atom_object_list: | ||||
|         x = atom.x | ||||
|         y = atom.y | ||||
|         coordinate_array.append([x, y]) | ||||
|     return coordinate_array | ||||
|  | ||||
| # 从原子对象列表中获取 x 和 y 的最大值和最小值 | ||||
| def get_max_min_x_y_from_atom_object_list(atom_object_list): | ||||
|     import guan | ||||
|     coordinate_array = guan.get_coordinate_array_from_atom_object_list(atom_object_list) | ||||
|     x_array = [] | ||||
|     for coordinate in coordinate_array: | ||||
|         x_array.append(coordinate[0]) | ||||
|     y_array = [] | ||||
|     for coordinate in coordinate_array: | ||||
|         y_array.append(coordinate[1]) | ||||
|     max_x = max(x_array) | ||||
|     min_x = min(x_array) | ||||
|     max_y = max(y_array) | ||||
|     min_y = min(y_array) | ||||
|     return max_x, min_x, max_y, min_y | ||||
|  | ||||
| # 从原子对象列表中获取满足坐标条件的索引 | ||||
| def get_index_via_coordinate_from_atom_object_list(atom_object_list, x=0, y=0, z=0, eta=1e-3): | ||||
|     for atom in atom_object_list: | ||||
|         x_i = atom.x | ||||
|         y_i = atom.y | ||||
|         z_i = atom.z | ||||
|         index = atom.index | ||||
|         if abs(x-x_i)<eta and abs(y-y_i)<eta and abs(z-z_i)<eta: | ||||
|             return index | ||||
|  | ||||
| # 根据原子对象列表来初始化哈密顿量 | ||||
| def initialize_hamiltonian_from_atom_object_list(atom_object_list): | ||||
|     import numpy as np | ||||
|     import guan | ||||
|     dim = guan.dimension_of_array(atom_object_list[0].energy) | ||||
|     num = len(atom_object_list) | ||||
|     hamiltonian = np.zeros((dim*num, dim*num)) | ||||
|     for i0 in range(num): | ||||
|         hamiltonian[i0*dim+0:i0*dim+dim, i0*dim+0:i0*dim+dim] = atom_object_list[i0].energy | ||||
|     return hamiltonian | ||||
| @@ -1147,7 +1147,7 @@ def statistics_of_guan_package(function_name=None): | ||||
|     except: | ||||
|         pass | ||||
|  | ||||
| # Guan软件包升级检查和提示(如果无法连接或者版本为最新,那么均没有提示) | ||||
| # Guan软件包升级检查和提示(对于无法连接或者版本为最新的情况,检查结果都没有提示) | ||||
| def notification_of_upgrade(timeout=5): | ||||
|     try: | ||||
|         import guan | ||||
| @@ -1157,4 +1157,140 @@ def notification_of_upgrade(timeout=5): | ||||
|             if latest_version != current_version: | ||||
|                 print('升级提示:您当前使用的版本是 guan-'+current_version+',目前已经有最新版本 guan-'+latest_version+'。您可以通过以下命令对软件包进行升级:pip install --upgrade guan -i https://pypi.python.org/simple 或 pip install --upgrade guan') | ||||
|     except: | ||||
|         pass | ||||
|         pass | ||||
|  | ||||
| # --- 自定义类和使用自定义类的函数 custom classes and functions using objects of custom classes --- | ||||
|  | ||||
| # 原子类 | ||||
| class Atom: | ||||
|     def __init__(self, name='atom', index=0, x=0, y=0, z=0, energy=0): | ||||
|         self.name = name | ||||
|         self.index = index | ||||
|         self.x = x | ||||
|         self.y = y | ||||
|         self.z = z | ||||
|         self.energy = energy | ||||
|  | ||||
| # 将原子对象列表转成多个独立列表 | ||||
| def convert_atom_object_list_to_multiple_lists(atom_object_list): | ||||
|     name_list = [] | ||||
|     index_list = [] | ||||
|     x_list = [] | ||||
|     y_list = [] | ||||
|     z_list = [] | ||||
|     energy_list = [] | ||||
|     for atom_object in atom_object_list: | ||||
|         name_list.append(atom_object.name) | ||||
|         index_list.append(atom_object.index) | ||||
|         x_list.append(atom_object.x) | ||||
|         y_list.append(atom_object.y) | ||||
|         z_list.append(atom_object.z) | ||||
|         energy_list.append(atom_object.energy) | ||||
|     return name_list, index_list, x_list, y_list, z_list, energy_list | ||||
|  | ||||
| # 将原子对象列表转成原子字典列表 | ||||
| def convert_atom_object_list_to_atom_dict_list(atom_object_list): | ||||
|     atom_dict_list = [] | ||||
|     for atom_object in atom_object_list: | ||||
|         atom_dict = { | ||||
|             'name': atom_object.name, | ||||
|             'index': atom_object.index,  | ||||
|             'x': atom_object.x, | ||||
|             'y': atom_object.y, | ||||
|             'z': atom_object.z, | ||||
|             'energy': atom_object.energy, | ||||
|         } | ||||
|         atom_dict_list.append(atom_dict) | ||||
|     return atom_dict_list | ||||
|  | ||||
| # 从原子对象列表中获取 (x, y) 坐标数组 | ||||
| def get_coordinate_array_from_atom_object_list(atom_object_list): | ||||
|     coordinate_array = [] | ||||
|     for atom in atom_object_list: | ||||
|         x = atom.x | ||||
|         y = atom.y | ||||
|         coordinate_array.append([x, y]) | ||||
|     return coordinate_array | ||||
|  | ||||
| # 从原子对象列表中获取 x 和 y 的最大值和最小值 | ||||
| def get_max_min_x_y_from_atom_object_list(atom_object_list): | ||||
|     import guan | ||||
|     coordinate_array = guan.get_coordinate_array_from_atom_object_list(atom_object_list) | ||||
|     x_array = [] | ||||
|     for coordinate in coordinate_array: | ||||
|         x_array.append(coordinate[0]) | ||||
|     y_array = [] | ||||
|     for coordinate in coordinate_array: | ||||
|         y_array.append(coordinate[1]) | ||||
|     max_x = max(x_array) | ||||
|     min_x = min(x_array) | ||||
|     max_y = max(y_array) | ||||
|     min_y = min(y_array) | ||||
|     return max_x, min_x, max_y, min_y | ||||
|  | ||||
| # 从原子对象列表中获取满足坐标条件的索引 | ||||
| def get_index_via_coordinate_from_atom_object_list(atom_object_list, x=0, y=0, z=0, eta=1e-3): | ||||
|     for atom in atom_object_list: | ||||
|         x_i = atom.x | ||||
|         y_i = atom.y | ||||
|         z_i = atom.z | ||||
|         index = atom.index | ||||
|         if abs(x-x_i)<eta and abs(y-y_i)<eta and abs(z-z_i)<eta: | ||||
|             return index | ||||
|  | ||||
| # 根据原子对象列表来初始化哈密顿量 | ||||
| def initialize_hamiltonian_from_atom_object_list(atom_object_list): | ||||
|     import numpy as np | ||||
|     import guan | ||||
|     dim = guan.dimension_of_array(atom_object_list[0].energy) | ||||
|     num = len(atom_object_list) | ||||
|     hamiltonian = np.zeros((dim*num, dim*num)) | ||||
|     for i0 in range(num): | ||||
|         hamiltonian[i0*dim+0:i0*dim+dim, i0*dim+0:i0*dim+dim] = atom_object_list[i0].energy | ||||
|     return hamiltonian | ||||
|  | ||||
| # --- 废弃函数/版本兼容(不推荐使用,并可能在未来的版本中被移除)deprecated --- | ||||
|  | ||||
| def make_sh_file(sh_filename='a', command_line='python a.py', cpu_num=1, task_name='task', cd_dir=0): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.make_sh_file_for_qsub().') | ||||
|     guan.make_sh_file_for_qsub(sh_filename=sh_filename, command_line=command_line, cpu_num=cpu_num, task_name=task_name, cd_dir=cd_dir) | ||||
|  | ||||
| def plot_without_starting_fig(plt, fig, ax, x_array, y_array, xlabel='x', ylabel='y', title='', fontsize=20, style='', y_min=None, y_max=None, linewidth=None, markersize=None, color=None, fontfamily='Times New Roman'): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.plot_without_starting_fig_ax().') | ||||
|     guan.plot_without_starting_fig_ax(plt, fig, ax, x_array, y_array, xlabel=xlabel, ylabel=ylabel, title=title, fontsize=fontsize, style=style, y_min=y_min, y_max=y_max, linewidth=linewidth, markersize=markersize, color=color, fontfamily=fontfamily) | ||||
|  | ||||
| def draw_dots_and_lines_without_starting_fig(plt, fig, ax, coordinate_array, draw_dots=1, draw_lines=1, max_distance=1, line_style='-k', linewidth=1, dot_style='ro', markersize=3): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.draw_dots_and_lines_without_starting_fig_ax().') | ||||
|     guan.draw_dots_and_lines_without_starting_fig_ax(plt, fig, ax, coordinate_array, draw_dots=draw_dots, draw_lines=draw_lines, max_distance=max_distance, line_style=line_style, linewidth=linewidth, dot_style=dot_style, markersize=markersize) | ||||
|  | ||||
| def get_days_of_the_current_month(str_or_datetime='str'): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.get_date_array_of_the_current_month().') | ||||
|     date_array = guan.get_date_array_of_the_current_month(str_or_datetime=str_or_datetime) | ||||
|     return date_array | ||||
|  | ||||
| def get_days_of_the_last_month(str_or_datetime='str'): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.get_date_array_of_the_last_month().') | ||||
|     date_array = guan.get_date_array_of_the_last_month(str_or_datetime=str_or_datetime) | ||||
|     return date_array | ||||
|  | ||||
| def get_days_of_the_month_before_last(str_or_datetime='str'): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.get_date_array_of_the_month_before_last().') | ||||
|     date_array = guan.get_date_array_of_the_month_before_last(str_or_datetime=str_or_datetime) | ||||
|     return date_array | ||||
|  | ||||
| def pdf_to_text(pdf_path): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.pdf_to_text_with_pdfminer3k().') | ||||
|     content = guan.pdf_to_text_with_pdfminer3k(pdf_path) | ||||
|     return content | ||||
|  | ||||
| def statistics_with_day_and_time(content='', filename='time_logging', file_format='.txt'): | ||||
|     import guan | ||||
|     print('Warning: The current function name has been deprecated, which will be deleted in the future version. Please change it into guan.logging_with_day_and_time().') | ||||
|     guan.logging_with_day_and_time(content=content, filename=filename, file_format=file_format) | ||||
		Reference in New Issue
	
	Block a user