匹配查找HIT.py
- input_file = "/home/databank/pengziyu/PAK4/0523-library3/HIT/HIT.txt"
- Library = "/home/databank/pengziyu/PAK4/CompoundLibrary4.txt"
- # 读取Library文件内容并存储在一个集合中
- with open(library_file, 'r') as libfile:
- 集合: mol_smiles = {line.split('\t')[0] for line in libfile if line.strip()}
- strip() 方法用来移除字符串头尾的空白符,包括空格、换行、制表符等
- split() 用于按照指定的分隔符将字符串分割成多个部分,结果是一个列表。
- 列表:library_content = [line.split()[1] for line in libfile if len(line.split()) > 1]
列表[list]和集合{set}在Python中的行为有明显不同,特别是在处理重复值时。
列表允许重复值存在,而集合自动排除重复值,只保留唯一项。
- # 打开library_file文件用于逐行查找:这种方法在每次检查时都需要遍历 library_lines,因此时间复杂度较高。如果 Library 文件很大,这种方法可能会非常慢。
- with open(library_file, 'r') as libfile:
- library_lines = libfile.readlines()
- #使用集合的方法:内存占用相对较大,但查找速度快,适合文件较大、查找次数较多的情况。
- #逐行查找的方法:内存占用小,但查找速度慢,适合文件较小、查找次数较少的情况。
- with open(input_file, 'r') as infile:
- for line in infile:
- line = line.strip() # 去除行末的换行符和空格
- if line in Library:
- print(f'Matched: {line}')