DTA随笔3

2023-12-02 22:48
文章标签 随笔 dta

本文主要是介绍DTA随笔3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

datahelper.py

  1. ligands = json.load(open(fpath + "ligands_can.txt"), object_pairs_hook=OrderedDict)

Python 的标准库 json 提供了对 JSON 的解析,只要 json.load 就可以将 JSON 文件转换成dict格式。但它将 JSON 的键值对保持在 dict 里,导致原有的顺序信息丢失。因为 JSON 格式本身的定义就是键顺序无关的,所以 json.load 这个行为是合理的行为。
想要保留此顺序信息,首先需要有一种保持键顺序的、类似 dict 的数据结构。collections.OrderedDict 就是一种好的选择。此外,json.load 本身为这种需求提供了钩子。

import json
from collections import OrderedDictjson.load(filename, object_pairs_hook=OrderedDict)

这样,ligands中properties的顺序是跟json中定义的顺序是一样的。


  1. Y = pickle.load(open(fpath + "Y", "rb"), encoding='latin1')

pickle协议和JSON区别
(1)JSON是一种文本序列化格式(它输出unicode文本,虽然大部分时间它被编码utf-8),而pickle二进制序列化格式,如果需要最佳尺寸特征,则可以有效地压缩数据;
(2)JSON是人类可读的,而pickle则不是;
(3)JSON是可互操作的,并且在Python生态系统之外广泛使用,而pickle是特定于Python的;它的优点是没有外部标准强加的限制,例如JSON或XDR(不能代表指针共享); 但是这意味着非Python程序可能无法重建pickled Python对象。

序列化对象层次结构,只需调用该dumps()函数即可。同样,要对数据流进行反序列化,请调用该**loads()**函数。

pickle.load(file,*,fix_imports = True,encoding =“ASCII”,errors =“strict”)
打开的文件对象文件中读取pickle对象表示,并返回其中指定的重构对象层次结构。

可选的关键字参数是fix_imports,encoding和errors:
(1)如果fix_imports为true,则pickle将尝试将旧的Python 2名称映射到Python 3中使用的新名称。
(2)encoding默认为’ASCII’,是python3格式所用。如果原代码是python2格式的,则可以用encoding=‘latin1’,这样可以读取python2格式下存储的NumPy阵列和实例datetime。


  1. for i, ch in enumerate(line[:MAX_SMI_LEN]):

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标

seq = ['one', 'two', 'three']
for i, element in enumerate(seq):print i, element

输出:
0 one
1 two
2 three

这篇关于DTA随笔3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/447126

相关文章

【 Android 应用开发随笔】-- PackageInstaller.SessionCallback

PackageInstaller.SessionCallback 是 Android 开发中的一个接口,用于在应用程序安装过程中接收安装状态的回调。这个接口属于 android.content.pm.PackageInstaller 类,主要用于处理通过 PackageInstaller 类进行的包安装。 主要功能 ◾ 安装进度通知: PackageInstaller.SessionCal

程序员的自我修养--术语随笔

PLT PLT(Procedure Linkage Table)是用于动态链接共享库中函数调用的一种数据结构,它在程序运行时起着至关重要的作用。下面是对 PLT 的详细解释:作用: PLT 主要用于实现库函数的延迟绑定(dynamic binding)。它负责将程序中对共享库中函数的调用映射到最终的共享库函数的地址上,并且支持共享库的重定位。 实现原理: 当一个程序调用共享库中的函数时,对应的

强化学习实操入门随笔

碎碎念:经过思考,打通底层逻辑,我认为未来ai的功能是在沟通领域代替人,未来人-人模式(媒介是死的语言,比如看古人留下的文字、聊天的暂时不在)会变成人-ai替身-人模式(符合本人想法的“预测个性化语言”)。由于沟通越来越虚拟化和低成本,以及各种模态(比如视频链接)的数字媒介比见面聊天效率更高,所以制作人的各种在虚拟数字空间的“替身”(模仿聊天、总结信息等秘书类事务)是很可能出现的重点问题。

周末随笔 | 笔耕者的悲哀 —— 盗亦无道

欢迎跳转到本文的原文链接:https://honeypps.com/talk/the-thief-has-no-way/ 今天所要说的不是技术,而是盗版这个现象。对于技术公众号来说,很少会写一些技术之外的东西。而且写一些实事类的东西对触碰到一部分人的利益,更有甚者会被“安排”。 对于盗版,我其实已经习惯了,也早已习惯地采取“鸵鸟策略”来应对。不过昨天发生的一件事情确实有点让人寒心。 前天我的

第三章 操作符读书随笔

1、 赋值运算符“=”:     对于基本类型来说,是把基本类型的实际内容赋给了左边的变量。     对于对象类型来说,是把对象的引用赋给了左边的变量。不同的变量可以引用同一个对象的引用,从而指向同一个对象。 2、整数除法“/”     进行除法的时候,只获取整数部分,不会四舍五入。 3、逻辑比较运算符“==”     逻辑等于运算符,比较的是对象的引用,一般情况下会根据equals方

随笔十、音频扩展模块测试

本项测试简单,对购买的音频扩展模块进行录音放音测试 按照使用说明,连接音频小板,一个喇叭一个麦克风,4根线,buildroot系统镜像 录音测试 root@RK356X:/# arecord -c 1 -r 44100 -f S16_LE /tmp/record.wav Recording WAVE '/tmp/record.wav' : Signed 16 bit Little En

随笔1:数学建模与数值计算

目录 1.1 矩阵运算 1.2 基本数学函数 1.3 数值求解 数学建模与数值计算 是将实际问题通过数学公式和模型进行描述,并通过计算获得模型解的过程。这是数学建模中最基本也是最重要的环节之一。下面是详细的知识点讲解及相应的MATLAB代码示例。 1.1 矩阵运算 知识点讲解: 在数学建模中,矩阵运算是非常基础且重要的工具。许多实际问题可以通过矩阵来表示,例如线性方程

2024年8月总结及随笔之逝

1. 回头看 日更坚持了609天。 读《零信任网络:在不可信网络中构建安全系统》更新完成读《软件开发安全之道:概率、设计与实施》开更并持续更新 2023年至2024年8月底累计码字1463007字,累计日均码字2402字。 2024年8月码字109278字,同比增长177.6%,环比增长27.3%,日均码字数3525字,累计码字745044字,累积日均码字3053字。 读完以下这些书

随笔九、SARADC按键程控测试

目录 1. 泰山派环境 2. 按键3分析 3. 编程测试 1. 泰山派环境 泰山派开发板上有3个按键 按键1是电源按键PWRON,实测按几下会导致开发板重启 按键2是复位按键RESET,按下立马复位重启 按键3是升级按键RECOVER,配合RESET按键可以使开发板进入Loader 烧写模式 一般来说开发板都会给用户提供一个用户按键,看样子泰山派用户按键是需要自己用G

随笔八、LED-RGB灯程控测试

目录 1. 泰山派环境 2. 编程控制 1. 泰山派环境 泰山派开发板上有一颗RGB三色LED灯,烧写官方镜像上电后开始闪烁,表示系统已经正常运行。可以在设备树里修改初始状态。 查看电路图知道,RGB是通过GPIO1的B0~B2引脚控制的,低电平点亮。 SDK包含了leds的驱动 root@RK356X:/# ls /sys/class/leds/ mmc0::  rg