Archive 2015 年 5 月 31 日

中医中的疾病与季节关系:免疫系统的季节性

        根据剑桥大学的一项研究表明,我们的免疫系统,会随着季节的变化而不同,这可以帮助解释为什么某些疾病(如心脏病和类风湿性关节炎),在冬天会加重,而人们在夏季往往更健康。        这项研究结果,发表在最近的《自然通讯》杂志(Nature Communications),表明我们的基因中有将近四分之一基因(检测的22,822个基因中的5,136个)的活性,根据一年当中的时间变化而不同,一些基因在冬季更活跃,而另一些则在夏季更活跃。这一季节性也会影响我们的免疫细胞以及我们血液和脂肪组织的组成。        一段时间以来,科学家们已经知道,各种各样的疾病,包括心血管疾病、自身免疫性疾病(如1型糖尿病、多发性硬化症)、精神疾病,呈现出季节性的变化,像维生素D代谢那样。然而,这是首次有研究表明,这可能是由于我们免疫系统功能的季节性变化。        JDRF/威康信托基金会糖尿病和炎症实验室主任John Todd 教授说:“这真是一个令人惊讶和偶然的发现,因为它涉及到我们如何确定和描述1型糖尿病易感基因的影响。在某种程度上,很明显这有助于解释为什么那么多疾病——从心脏病到精神病,在冬季更糟糕。我们该如何对待疾病(如1型糖尿病),甚至我们如何规划我们的研究,这些结果的意义可能是深远的。”        由剑桥大学医学研究所医学遗传学系JDRF /威康信托基金会糖尿病和炎症实验室带领的一个国际团队,检测了来自16,000多人的样本,他们生活在北半球和南半球,包括英国、美国、冰岛国家、澳大利亚和冈比亚。这些样本包括血液样本和脂肪组织的一个混合物。         研究人员采用多种技术来研究样本,包括研究血液中发现的细胞类型,并测量了单个基因的表达水平——当一个基因在一个特定细胞或组织中活跃的时候被认为是“表达”,通常涉及蛋白质的生成。他们发现,数以千计的基因在血液和脂肪组织中的表达不同,这取决于样品是在一年的什么时间采集。同样地,他们在血液中发现的细胞类型中也切断确定了季节性差异。        季节性差异,存在于地理和种族多元化地点混合的种群中——但是季节性基因在南半球和北半球显示出相反的模式。然而,季节性活动的模式在冰岛受试者中并没有强烈反映。研究人员推测,这可能是由于夏季近24小时的日光和冬季近24小时的黑暗。         特别感兴趣的一个基因是ARNTL,它在夏天更为活跃,在冬天则不活跃。以前的研究已经表明,至少在小鼠中,这个基因可抑制炎症——机体对感染的反应;如果该基因在人类中有相同的功能,那么在北半球冬季期间炎症水平会更高。炎症反应是一系列疾病的一个危险因素,因此,那些处于最大风险的人,在冬季可能会达到“阈值”,在这个阈值上疾病很快就成为一个问题。靶定炎症机制的药物,可以提供一种方式,在冬季期间帮助更有效地治疗这些疾病。         一个特别令人惊讶的发现是,与个体疫苗接种反应有关的一组基因,在冬季更为活跃,这表明一些疫苗接种计划如果在冬季实施则会更有效,因为此时免疫系统已经“做好准备”响应。        他们认为,在欧洲和澳大利亚冬季期间,触发免疫反应所需的阈值可能较低,作为我们与传染性生物(往往在冬季更为常见)协同进化的一个直接后果。有趣的是,冈比亚人在血液免疫细胞数量表现出明显的季节变化,与雨季相关(六月到十月),在此期间的传染病,特别是蚊子传播的疾病(如疟疾),更为普遍。         Chris Wallace博士说:“我们知道,人类会适应不断变化的环境。我们的研究表明,人类的免疫系统在赤道地区(季节变化不明显)表现出的季节性差异,不同于高纬度和低纬度地区的人,他们在夏季和冬季之间有着更明显的差异。”         目前还不清楚什么机制维持我们所看到的免疫系统季节性变化,可能是由于环境因素,如日光和环境温度。我们身体内部的生物钟——被称为昼夜节律,部分是由日光的改变而协调,这也解释了为什么不符合日常循环工作的人,如工厂轮班工人或长途航班上的工作人员,可能健康状况较差。       …

Read More

关于Swiss Ephemeris中的坐标

2.4.4. Coordinate systems, degrees and radians SEFLG_EQUATORIAL              returns equatorial positions: rectascension and declination. SEFLG_XYZ                             returns x, y, z coordinates instead of longitude, latitude, and distance. SEFLG_RADIANS                    returns position in radians,…

Read More

由推论出错谈谈梅花易数起卦中的有趣现象

  上篇文章<<解决了起卦使用真随机数的问题>> 本以为解决了计算机上以九取模的平均分布问题,但是经过实践,发现这样不但得不到平均分布,得到的反而是正态分布,原因是让两个随机数进行了相加。所以如何让九宫的概率严格平均分布暂时还没有解决。   连续的不同的单概率事件累加,总体上它就会出现正态分布,这个满足中心极限定理。   更通俗一点说,0~8中随机取一个数,这个是平均分布的,但是先在0~4个中取1个,再取0~4中取1个,它们累计的和,却是正态分布的,与直接在0~8中任意取一个数的概率分布并不一样。   这是因为0~8中一共是9个数字,而两次的0~4虽然看起来和还是0~8,实际上却是在两次是在10个数字中取了,于是概率就发生了叠加,这就导致了正态分布的出现。        比如按上述方式先取0~4中一个,然后再取,相加起来看是什么卦,进行1000次,结果会形成这样的分布:        乾 63        兑 112        离 178        震 235        巽 192        坎 124        艮 60        坤 36…

Read More

解决起卦的九宫的同余的概率分布问题

  无论是采用九宫模拟还是八卦模拟,产生随机数都会遇到一个问题,即在9或8上不能平均分布,比如产生的随机数范围是0~65535,一共65536个数,而6+5+5+3+6 = 25,2+5=7,余下为7,这会导致生成的随机数分布概率并不均等,所以它们无法满足在9的空间上能够平均分布,这是不符合自然现状的。如果是对于8来说,已知65536为2的16次方,而2的15次方是可以被8整除的,所以分布下来就多了2个,同样会导致在8的空间分布上不平均。   有一种思路是取一个足够大的数,把误差降到最低,比如取值范围为2的64次方,那么多出来的2个不平均分布,只占1/264    的比重影响,可以说是微乎极微。   不过这样始终让人感觉不完美,所以为了追求完美,完全可以改进一下。   因为通常用八卦时不一定要用九宫,用九宫时一定要用到八卦,所以这个问题并不难解决。   需要构造出一个方法,让它都能整除,即存在一个数S        S%8=0  S%9=0   并且 S =2N (n=0,1,2,3,4....)   但这个是没有解的,所以是不现实的,那么就把问题改一下:   如果是2某个次方加上一个数满足这个条件的话,那就会大大减低计算量。     于是搜了一下解集,发现如下可以满足条件:        式  次方值   2^6+8  64   2^12+8 4096   2^18+8 262144   2^24+8 16777216   2^30+8…

Read More

解决了起卦使用真随机数的问题

  对于灵机起卦的术数来说,要做到术数上的准确预测,先要找到目前不可预测的数据,然后从这个数据才可推出可预测的结果,这是个颇为矛盾的逻辑。   而不可预测的数据,自然是真随机数了,至于真正的随机数到底是存在还是不存在,这个很难说,是个哲学问题,万物虽然都是概率的呈现,但是概率又是什么决定的?   回正题,一开始从淘宝上查有没有硬件的真随机数发生器,可惜万能的淘宝令人失望了,然后检查电脑的CPU是Inter的,Inter的CPU正好提供有真随机数的发生器,于是动念头想直接访问Inter的CPU,查了一下,需要下载Inter的数学库,于是就去慢慢下载。   下完后竟然发现不能运行,因为版本太老不支持XCode6,所以竟然连安装都不让安装,只好放弃。   于是又查有没有其它办法可以通过这种方式获取随机数,花了许久,运气不错发现篇文章表示Inter提供直接使用汇编指令来访问CPU。   然后麻烦就来了,这个是MAC的系统,编译出来是dylib库,然后尝试通过mono去调用,无论如何也提示调用不了,找不到文件。然后又继续翻网站,终于发现,原来编译时,只能编译成32位的,这样Mono才能调用,来回折腾了几次后,成功实现真随机数的调用了。   不得不说,国内的资料实在不好查,还是英文网站上的资料比较全一些,虽然折腾了一个晚上,但还是值得的,能够实现真随机数的调用,能够解决很多问题。   产生的真随机数图如下:      而相同绘图算法C#生成随机数如下:      比较奇怪的是,差异并不是很明显,是MAC底层的随机数算法做得极好的缘故?所以近似于真实随机数的效果了?   不过想来伪随机数与真随机数还是会有差别,这个需要用大量的卦例进一步检验了。      其它还有一些真随机数的生成办法,不过没有实现,这里也提一下:   在IPAD或是IPhone或是Android机上,是没有CPU能够支持随机数的,要做到能在这些上面更准确的起卦,尤其是梅花卦,应该考虑如下方案来生成熵池起卦:   1、通过访问重力感应,求测者随意摇晃手机,从中搜集精确的数据用来起卦,类似于真实的摇签或摇卦,据在下所知,现在还没有真正如此来实现的,大多的摇晃起卦,实际上是早就用伪随机数起好了,然后摇晃只是发个声而已。   2、求测者随意在屏幕上乱点乱划,然后搜集数据来综合起卦,这样得到的卦测算起来就更加方便,不过这种效果直觉上有略有折扣。   3、打开麦克风,通过麦克风搜集实际的噪音,动态调整振幅后,随机采集数据。这个还可以更加改进,让求测者念一句话,因为发音总有变化,通过提取变化,可以得到真实随机的采样。     4、对使用者用摄像头拍照,根据照片的色彩矩阵做一个运算,从而得到卦,这种起卦方式应该是比较灵验的,顺便还能让卦师结合面相也一起看了,不过有影响隐私的嫌疑。     以上四种起卦方式,可以在移动设备上进行。

Read More

计算机伪随机数会对起卦准确率造成影响

  计算机上的随机数是伪随机,它要么是固定的序列,要么是利用当前的时间来生成的一个随机器。测试了一下MONO在MAC上调用的随机器发生器:让它随机产生坐标,然后标记成白点,产生的结果如下:    如果是在Windows上,使用C#进行生成的300x300的随机图像值是这样:   然而,如果是根据真实的自然环境,由大气的运动(空气中的雷暴产生的噪声)而自然产生随机数应该是这样:   明显可以看出,在MAC上的mono的C#中代码所产生的随机数所形成的密度远远低于真实的随机数,不过唯一值得庆幸的是,如果见到php的随机数生成的样子是多么糟糕,就会更有感触了:    随机数的正确与否,直接关系到起卦的关联性,因为计算机上使用的虽然普遍是伪随机数,但是来的人时间却是不一定的,这样就在一定程度上模拟了随机,但是在出现生成随机比较紧密的时候,它对自然的模拟所体现出来的随机真实度就会大大降低。   术数最讲究的就是对自然的模拟,如果不能进行一个真实的模拟,也就谈不上预测。   典型的一种表现就是,在网上起卦,比如六爻卦,或随机梅花卦,其准确率都会降低,如果是手起摇的卦,大多看事一目了然,看是什么就是什么,但是换成网络起卦后,会出现信息不同程度偏移(注意是不同程度的,有时小有时大)。   信息偏移,比如看是收获当为一万块,网络用卦结果发现只有五千或八千,本来手卦经验很准的数,在网上起卦也就产生了模糊偏差。这就是因为同样的随机数发生器被频繁使用,而导致了整体上的真实度降低。   虽然大多数时候还是可以看事,也多能断得准,但其中难免会有不同程度的信息失真,准的时候就如同上面的点与自然随机点的分布密集恰好重合,不准的时候就是不符合真实随机的时候。   自然的随机性,正如清澈的海边,尽管水一直在波动,但并不会影响人通过清晰地看到水下的鱼。现在网上起卦的,从上面的自然分布来看,很容易明白,信息失真最大的便是php的网站,因为它用的随机数的分布可以说最不自然,所以在起卦上相对也就更加不准。   其次是asp,asp.net等网站,它们的随机数发生器,调用的是相同的低层,生成的随机数模拟度显然比真实的要淡得多,信息也有一定程度的失真。   要成功使用真正有效的随机器,有不少的办法,一种是动态监测系统运行状况或者其它方面搜集信息,然后汇总信息构成随机数生成器,这样产生的随机数值会更加准确,或者直接使用硬件通过USB接口之类的来传送信息,或者如果是使用的Inter的CPU的话,可以直接调用CPU的接口来生成随机数。   如此使用了真随机数,起卦才能有所保证。          

Read More

使用AForge.NET中的BP神经网络库实现异或逻辑

  调试神经网络时,感觉无论怎么测试数据,收敛都非常慢,总怀疑是不是AForge.Net的BP算法有问题,所以测试一下异或逻辑,代码如下:    private static void testXOR(){             var func = new AForge.Neuro.SigmoidFunction();             var network = new AForge.Neuro.ActivationNetwork(func,2,2,1);             AForge.Neuro.Learning.BackPropagationLearning bp = new AForge.Neuro.Learning.BackPropagationLearning (network);             double input = new double;             input  = new double{ 0, 0 };             input  = new double{ 0, 1 };             input  = new double{ 1, 0 };             input  = new double{ 1, 1 };             double output = new double;             output = new double{0};             output = new double{1};             output = new double{1};             output = new double{0};             double error=1;             while(error>0.01){                 error = bp.RunEpoch(input,output);                 Console.WriteLine("error:"+error);             }             for (int i = 0; i < 4; i++) {                 var result =  network.Compute (input );                 Console.WriteLine(string.Format("output:{0},realresult:{1}",result,output));             }         }   输出结果如下:           测试了一下,只要有个隐藏层神经元为2,就足够学习到异或逻辑,而为1,很难收敛,隐藏神经元为20以上时,数值变化已经在小数点后的十几位了,也很难收敛,这说明并不是神经元越多就越好,同时增加层数时也会发现这种情况。…

Read More

单层感知器与哲学上简单思考

  无意间又翻回了单层的感知器,为了加深体会,所以又写码测试了一下,其运算速度确实很快,在使用 Threshold 激活函数的前提下,对手写的前一千个样本进行识别,识别速度极快,但是对于已经训练过的数据,效果也很一般,只有77%左右,但对于没有识别过的数据,就惨不忍睹了,几乎全错。这就是感知器的特点,它在低维的层面对进行线性可分,而遇到线性不可分的问题时,就会出现这样的情况。      这个也可以抽象到现实的哲学中,单层感知器,它就是如同在一个平面上,试图通过划线来对事物进行区域划分,并且这种划分是非此即彼的,如果有很多分类的东西混在一起时,必须要有符合目标特征的函数才能够更好的识别目标事物,而这种往往在现实中是不可能的。   如果只在极低的维度上对事情进行分类,也就是死硬派的认为,凡事非此即是彼,那么有再多的对客观事物有再正确认识,在进行教育后,也是会谬误百出,所以思考问题时只考虑某一种单一的划分条件,是不能成立的。   阴阳的认识也是如此,阴阳总是相对的,这种相对实际上就是在不同环境与条件下,对阴阳进行赋予了不同的权重,但是光仅仅是这样是不够的,如果局限在某一个单一的方面去划分,用阴阳来认识事物就难免会出现极大的问题。        像感知器这样的情况,直接根据已知事物的特征,然后判断相差多少,去不断调整认识,虽然这样有益于正确认识事物,但也会带来很强的经验主义,而经验主义的结果就是导致对于新事物难受接受,从而总是会判断错误。           大多数情况下,分类发生错误,不是说客观事物无法分类,而是分类的方法不对就会导致错误,这一点一定要明确。

Read More