Sym

golang-支持括号运算的计算器

核能气质少年 提交于 2021-02-17 07:20:50
现在需要实现一个计算器函数,输入是一个字符串格式的数学运算表达式,要求计算出该表达式的最终结果。表达式的操作符支持加减乘除和小括号。 思路:利用stack,将低优先级的运算压栈,遇到相同优先级的则计算第一个符号。右括号的,把括号内式子单独计算,并把结果代入原式子继续计算 package main import ( "errors" "fmt" "strconv" "log" ) type Stack struct { elements []interface{} //elements } func NewStack() *Stack { return &Stack{make([]interface{}, 0, 100)} } func (s *Stack) Push(value ...interface{}) { s.elements = append(s.elements, value...) } //返回下一个元素 func (s *Stack) Top() (value interface{}) { if s.Size() > 0 { return s.elements[s.Size()-1] } return nil //read empty s } //返回下一个元素,并从Stack移除元素 func (s *Stack) Pop() (value interface{}

T细胞耗竭:对T细胞免疫的新认识

China☆狼群 提交于 2021-02-02 06:09:02
--------什么是T细胞耗竭?-------- 跟其他免疫细胞一样,T细胞来源于造血干细胞分化。临床事件中,血常规只能看到淋巴细胞数据和比例, 不能区分B淋巴细胞和T淋巴细胞,其具体区分必须通过染色,做流式分析才能得出。 急性感染和疫苗接种后,T细胞向 效应T细胞(Teff) 和 记忆T细胞(Tmem) 分化。 慢性感染和癌症病人,T细胞受到抗原持续刺激,细胞记忆不能有效地发育分化,T细胞变得精疲力竭,称之为 T细胞耗竭(Tex) 。简单说,急性疾病和慢性疾病中,T细胞向两种方向分化,其表面分子是不同的。 Tex细胞在功能上有别于Teff和Tmem,其特点是 效应功能丧失 , 抑制性受体(IRS)表达增高且持续 , 表观遗传和转录谱改变 , 代谢方式改变 。 T细胞衰竭是癌症病人免疫功能障碍主要因素之一 。2019年7月,国际顶级期刊Nature曾对T细胞耗竭做出深入的系列报道,阐释转录因子TOX在T细胞耗竭中的重要作用。 --------T细胞耗竭的特征-------- 对细胞因子的反应性改变 在慢性感染过程中,病毒特异性的 Tex细胞 ,由于IL-7Rα和IL-2/15Rβ 信号通路的缺陷 ,无法通过IL-7和IL-15介导稳态自我更新。 Tex细胞 增殖是通过持续的 抗原信号来维持 的。但Tex细胞会失去对额外增殖信号的反应能力,并且对未来的相同抗原刺激没有反应,导致

ES5-ES6-ES7_Symbol数据类型

百般思念 提交于 2021-02-02 03:42:51
Symbol数据类型简介 ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。 Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。 凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。 Symbol函数前不能使用new命令,否则会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象。 也就是说,由于 Symbol 值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型 let s = Symbol(); // 变量s就是一个独一无二的值。typeof运算符的结果,表明变量s是 Symbol 数据类型,而不是字符串之类的其他类型 console.log( typeof s); // symbol console.log(s); // Symbol() // Symbol函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述, // 主要是为了在控制台显示,或者转为字符串时,比较容易区分 let s1 = Symbol(

干货丨时序数据库流数据聚合引擎教程

落花浮王杯 提交于 2020-12-16 08:30:09
流数据是指随时间持续增长的动态数据。互联网的运营数据和物联网的传感器数据都属于流数据的范畴。流数据的特性决定了它的数据集是动态变化的,传统的面向静态数据表的计算引擎无法胜任流数据领域的分析和计算任务,所以流数据场景需要专门的计算引擎来处理。 DolphinDB提供了灵活的面向流数据的聚合引擎,通过 createStreamAggregator 函数创建流数据聚合引擎,能够持续不断地对已有的流数据做聚合计算,并且将计算结果持续输出到指定数据表中。 1.聚合引擎应用框架 流聚合引擎本身是一个独立的计算引擎,只要向聚合引擎写入数据就可以触发计算,并将计算结果输出到目标表。而在流数据场景下,聚合引擎与流数据订阅功能(subscribeTable)配合,可以方便的将流数据持续的提供给聚合引擎。示例如下: tradesAggregator = createStreamAggregator(5, 5, <[sum(qty)]>, trades, outputTable, `time) subscribeTable(, "trades", "tradesAggregator", 0, append!{tradesAggregator}, true) 通过 subscribeTable 函数订阅流数据表,每次有新数据进入就会按指定规则触发append!{tradesAggregators}

干货丨时序数据库流数据聚合引擎教程

不打扰是莪最后的温柔 提交于 2020-12-15 12:04:42
流数据是指随时间持续增长的动态数据。互联网的运营数据和物联网的传感器数据都属于流数据的范畴。流数据的特性决定了它的数据集是动态变化的,传统的面向静态数据表的计算引擎无法胜任流数据领域的分析和计算任务,所以流数据场景需要专门的计算引擎来处理。 DolphinDB提供了灵活的面向流数据的聚合引擎,通过 createStreamAggregator 函数创建流数据聚合引擎,能够持续不断地对已有的流数据做聚合计算,并且将计算结果持续输出到指定数据表中。 1.聚合引擎应用框架 流聚合引擎本身是一个独立的计算引擎,只要向聚合引擎写入数据就可以触发计算,并将计算结果输出到目标表。而在流数据场景下,聚合引擎与流数据订阅功能(subscribeTable)配合,可以方便的将流数据持续的提供给聚合引擎。示例如下: tradesAggregator = createStreamAggregator(5, 5, <[sum(qty)]>, trades, outputTable, `time) subscribeTable(, "trades", "tradesAggregator", 0, append!{tradesAggregator}, true) 通过 subscribeTable 函数订阅流数据表,每次有新数据进入就会按指定规则触发append!{tradesAggregators}

数据库交易回测系列二:多因子Alpha策略回测

流过昼夜 提交于 2020-12-14 16:57:24
本系列文章将会介绍如何使用DolphinDB优雅而高效的实现量化交易策略回测。本文将介绍在华尔街广泛应用的多因子Alpha策略的回测。多因子模型是量化交易选股中最重要的一类模型,基本思路是找到某些和回报率最相关的指标,并根据这些指标,构建股票投资组合(做多正相关的股票,做空负相关的股票)。多因子模型中,单独一个因子的个股权重一般实现多空均衡(市场中性),没有暴露市场风险的头寸(beta为0,所以称之为alpha策略),能实现绝对收益。多个因子之间相互正交,方便策略配置,实现回报和风险的最优控制。另外,相比于套利策略(通常可以实现更高的sharpe ratio,但是scale不好),多因子alpha策略有很好的scale,可以配置大量的资金。多因子Alpha策略在对冲基金中的使用非常普遍。 1. 生成因子 本文的重点是实现多因子Alpha策略的回测框架。因子不是重点,这部分通常由金融工程师或策略分析师来完成。为了方便大家理解,文章以动量因子、beta因子、规模因子和波动率因子4个常用的风险因子为例,介绍如何在 DolphinDB database 中实现多因子回测。 输入数据表inData包含6个字段:sym (股票代码), date(日期), close (收盘价), RET(日回报), MV(市值), VOL(交易量) def genSignals(inData){

干货丨时序数据库DolphinDB数据导入教程

霸气de小男生 提交于 2020-12-11 08:30:18
企业在使用大数据分析平台时,首先需要把海量数据从多个数据源迁移到大数据平台中。 在导入数据前,我们需要理解 DolphinDB database 的基本概念和特点。 DolphinDB数据表按存储介质分为3种类型: 内存表:数据只保存在本节点内存,存取速度最快,但是节点关闭后,数据将会丢失。 本地磁盘表:数据保存在本地磁盘上,即使节点重启,也可以方便地通过脚本把数据加载到内存中。 分布式表:数据在物理上分布在不同的节点,通过DolphinDB的分布式计算引擎,逻辑上仍然可以像本地表一样做统一查询。 DolphinDB数据表按是否分区分为2种类型: 普通表 分区表 在传统的数据库中,分区是针对数据表的,即同一个数据库中的每个数据表可以有不同的分区方案;而DolphinDB的分区是针对数据库的,即一个数据库只能使用一种分区方案。如果两个表的分区方案不同,它们不能放在同一个数据库中。 DolphinDB提供了3种灵活的数据导入方法: 通过CSV文本文件导入 通过HDF5文件导入 通过ODBC导入 1.通过CSV文本文件导入 通过CSV文件进行数据中转是比较通用的数据迁移方式。DolphinDB提供了 loadText 、 ploadText 和 loadTextEx 三个函数来导入CSV文件。下面我们通过一个示例CSV文件 candle_201801.csv 来说明这3个函数的用法。 1

如何在数据库中利用高频数据找到最相关的股票

假如想象 提交于 2020-12-09 10:31:39
在制定投资策略时,我们往往会研究股票之间的相关性。研究个股的相关性或者个股与指数,ETF之间的相关性,从而通过对冲套利来获得稳定收益。找到最相关的股票,可以根据交易员的经验,也可以根据股票的相关信息(行业,beta,每日回报等)。 本文将介绍如何利用海量的高频数据寻找最相关的股票。 假设我们有一个数据表quotes,包含以下字段: symbol:股票代码 date:日期 time:时间 bid:买入价格 ofr:卖出价格 下面以纽约证券交易所2007年8月一个月实时报价数据的数据表quotes为例,计算股票在2007年8月1日的两两相关性。 选择500只最具流动性的股票。注意,由于本文使用的是纽约证券交易所的数据集,所以开盘时间是9:30-16:00。 dateValue=2007.08.01 num=500 syms = (exec count(*) from quotes where date = dateValue, time between 09:30:00 : 15:59:59, 0<bid, bid<ofr, ofr<bid*1.2 group by Symbol order by count desc).Symbol[0:num] 2. 构造股票每分钟交易价格的矩阵。列表示股票,行表示分钟。 priceMatrix = exec avg(bid + ofr)/2.0

DolphinDB与Pandas对于大文本文件处理的性能对比 智臾科技

删除回忆录丶 提交于 2020-12-04 13:44:14
DolphinDB Database 是一款高性能的分布式时序数据库。它集成了功能强大的编程语言和高容量高速度的流数据分析系统,为海量数据(特别是时间序列数据)的快速存储、检索、分析及计算提供一站式解决方案。 Pandas是Python的一个包,最初被作为金融数据分析工具而开发,为时间序列分析提供了很好的支持。 DolphinDB是一个分布式系统,但也可以作为工作站使用。DolphinDB和Pandas都能够处理大文本文件,哪个的表现更出色呢?在处理大文本文件时,我们最关心的两个因素是性能和内存占用情况。因此,我们将从这两方面对DolphinDB和Pandas进行对比。 本次测试使用的硬件和操作系统如下: Dell PowerEdge R830 服务器 内存:1024GB CPU:E5-4640 v4 48 核 2.1GHZ 操作系统:Fedora27 RAID 0:8X1.2TB 10000 RMP HDD DolphinDB提供了修改内存使用限制的配置项,所以我们把内存限制设置为128G,24核,这更符合大部分实际用户的服务器配置。而在Pandas中,我们无法对内存使用进行限制。 数据生成 我们在 DolphinDB database 中生成一个40G文本文件,包含了16列,一共有390,000,000行数据。生成数据的脚本如下: n=390000000 workDir = "

VASP使用笔记(计算电导率)

时光毁灭记忆、已成空白 提交于 2020-11-09 10:44:01
我使用版本为 VASP5.4.4 ,使用VASP接口软件为TransOpt,软件是上海大学材料基因组杨炯教授团队,博士毕业生李鑫等人编写的,原理相关理论部分paper里讲的很清楚了,好用的话记得 引用 哈 软件的github链接: https://github.com/yangjio4849/TransOpt Step1 首先编译两个版本的vasp,分别是vasp.sym版本和vasp.vk版本,这两个版本的编译文件在github链接里已经有了。其中sym版本会提供一个SYM的文件,vk版本会提供一个GROUP文件,SYM是记录了一些对称性下的信息文件,vk是记录了群速度的文件。分别在静态和band的计算中使用这两个版本即可产生对应的文件。 编译问题默认大家都可以解决吧。。。如果解决不了有人问再单独写一篇讨论。 Step2 计算目标材料的杨氏模量,这是该软件的一个重要输入信息,具体计算办法在我另一篇博客里有,关注后可以开启隐藏博文…or直接看 这里 Step3 计算材料的形变势 我是选择的CBM和选定原子的1s能级做差作为能量参考的,我的计算体系为3维材料,选择了在INCAR添加压力参数添加静水压的办法计算的,当然,也可以通过修改POSCAR来进行计算,只要体积变了应该都是ok的。 Step3 填写软件的input文件。 需要注意的是NELE这个参数