0.1.181
This commit is contained in:
parent
8f0bae617d
commit
e65ea73992
@ -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)
|
Loading…
x
Reference in New Issue
Block a user