小非的物理小站

Xiaofei 欢迎大家使用RSS订阅

开放研究之所以可能(三)

<p>  2021年5月21日,国家正式宣布全面脱贫,中国社会的发展消除了绝对贫困,一年来我也在几个城市走了一下,现在也暂时的稳定,安坐下来提笔,稍有恍惚。回忆起去年的想法以作二十年之约。</p> <p>  绝对贫困的大量消除,意味着许多人终于将自己在贫困中挣扎的双手解放出来,将这勤劳的双手放归到生产生活中去,这就是国家上下的生产力全面确认。其始终支撑这种前进的就是发展。</p> <p>  我自己生于1992年,生在市场经济改革方向的确立,第二次创业浪潮,现在我看到了在市场经济下社会的蓬勃发展。而2021年出生的这一代人,面对的则又是一个新的世界,感到他们多么地幸运,生产关系的调整潮涨潮落,无数人在其中起伏。</p> <p>  科学技术是全人类朴实的,没有阶级的,但科学技术发展背后,必然存在着其独特的经济结构。而当今世界,最为突出最为出彩的经济结构,就是所谓的中国特色社会主义下的市场经济。</p> <p>  管窥厘窥,自己来观科学研究工作,总觉得非但没有中特市场经济,连市场都没有。</p> <p>  甚至社会依然很多人认为,科学就是完全的无私奉献,完全的高尚行为,似要将科学本身替换为道德标准。其实是对科学研究工作本质的偏离,甚至可以说是宗教化的行为。科学研究依然是社会劳动的一部分,依然需要人力物力资源的分配与再分配。 认为科研只会赔钱,市场为了牟利,一旦参与市场,科学就不复存在。所有人只会娱乐,所谓科学就是满身的痛苦,自然不会有什么市场。我想这也是对市场经济的宗教化,试图将市场经济尤其是中国的市场经济妖魔化。</p> <blockquote> <p>“前者做了更前者的牺牲,自己无力生存,却苛责后者又来专做他的牺牲,毁灭了一些发展本身的能力”</p> </blockquote> <p>  这种错误的认识,是我们没有认识到,市场经济作为当今世界主要的经济模式其本身的进步意义,更没有接受中国特色社会主义市场经济的存在和独特。另有一批人,认为我们国家的发展,是与其他国家趋同的,经过时间的积累我们也会发展的像西方国家一样,但我随意观历史发展,趋同只会是局部只会是暂时的。而倘若趋同反而错失了进步的机遇,麻痹了前进的勇气,就更要不得,丢了去。</p> <p>  那么按照现有的基本看法,随发展的要求而来,应运而生的科学研究活动即是两种,集中分配资源发展的计划经济和社会推手的市场经济。可是由于中特市场经济的存在,私有制与社会化大生产的矛盾被大大削弱,市场经济下的科学研究活动就面临着动力不足的挑战。失去了过剩驱动的市场经济虽然平稳发展,然而却缺乏了科学研究中最重要的试错和探索机会,这便是人们经常提及的所谓战争驱动(私有制社会生产过剩导致经济强冲突)的技术发展,及其背后的科学探索活动。</p> <p>  这时又不免提及科学与技术的区别,看来,科学本身其实即是文化和文明的部分,而技术本身则是人类与自然接洽的实践。就像我的桌面壁纸《雅典学院》一样,柏拉图指向理念世界,过去意为理念哲学,现代化身为科学,亚里士多德指向自然世界,过去意为自然哲学,现代化身为技术,实质上也有主客观之说。当然本人按结构主义来说,与之理解稍有不同,暂且按下不表。世界资本主义的发展,导致资本繁荣,其主推即为开放技术,而资本力盛,敏感于科学,所以主推开放技术开源技术等等,而富余力削弱开放科学;反观中特,资本初萌,敏感于技术,为求自保,主推利用技术相互搏杀,技术发展而开放不实,更无力顾睱开放之于科学。当然也有估计我们将更加敏感于科学,因而走向封闭,故,常无,欲以观其妙。</p> <p>  传统科学研究活动的组织协调方式,其特点必须与现在社会发展相配合,否则强势之下已有疲态,如遇重挫必显其颓。</p> <blockquote> <p>似乎,没有人还会太认真</p> </blockquote> <p>  资本主义靠资本驱动科学研究。资本主义靠资本来主力驱动科学研究,而由于消灭了私有制与社会化大生产的矛盾,中特社会主义,有其不同。</p> <p>  不论是Aaron Swartz还是SciHub,亦或是Pirate 。都很难继续前行,因为其经济关系未能融入现有框架,当然这也可能是他们的目的,然而所处社会情况反噬着他们的意志和经济生存状况。</p> <p>  还有现今高考的位置,也有碍于时代的困顿。为了所谓市场公平,还是削弱了培训行业,当然这也许是进步的,可又没那么自信,市场培育出来的教育补充难道都是该被压制的吗。</p> <p>  一个由名词转向动词的结构主义转换,也就是科技到开放研究的转变是将会发生的。这就是开放研究。就像今天市场经济所面对的结构化改革四大要素的变化,有劳动力、土地、资本、创新,相对应的则是开放研究的四个要素特点。研究时间,研究资料,可重复性,有效交流。研究时间对应传统科研的行政工作,形成新专业市场分工。生产资料,对应的传统研究中,不充分发展的市场,传统研究还停留在依靠和附着于其他社会基本要素的生产过程中,我想这实际上是无法调动人力物力的,充其量只是空的名誉和微薄的施舍罢了。可重复性则对应解决着传统研究中的权威人情机构小团体小圈子。而最重要的也就是科学研究的关键,有效交流,这对应着传统研究中的封闭交流。</p> <p>  开放研究消解着权威,又不断建立着权威,而且这权威所发挥的主要能力,竟然就是自我的消解,终于使结构发生变动,合作模式从单一的金字塔结构,找回多样的结构。似乎有趣地寻了后现代主义的妙处。制度变革,有死水一潭的。有自动变为灵活多样的自主创新,活动主体也从人际圈子,变为自由组合的团体或散装团体。</p> <p>  开放研究与传统研究相互影响,在逐渐发展为创造市场,当然现在,在科学界已经有许多人进入到这开放研究的萌芽状态。</p> <p>  在更广泛的社会中,将会出现类似服务型的公司,研究和企业二者相互促进。必可以创造新的市场,当然新的不意味着强壮的,而甚至可能是无法达成的。科学界的资本积累,形成新的特色。不论哪里,开放研究也会帮上忙,我的朋友虽不多,甚至未见,但相信在社会的各处均发挥着作用。</p> <p>  可以预言的是二十年后,也就是这些不在贫困的一代人,成长起来二十来岁时。通过这种创造需求引导需求的过程,最终会创造一个新的市场。事在人为吧。一类就是科学界,为代表的新型的开放研究的新牌型大学。另类就是现代服务县企业。的乐观主义的精神。希望能在这趟旅程中不断前行,希望能与二十年后,成长起来的新一代年轻朋友们,愉快地相遇,与你们并肩前行。</p> <p>  只要存在没有被满足的需要,就存在市场机会。这将不是强制性的,不是道德性的,而是通过新的市场结构的诞生,旧的需求被满足了,新的需求就会伴随而来。“我们虽不能说停顿便要灭亡,但较之进步,总是停顿与灭亡的路相近。”,社会之发展,各种因素相互促进,却从不会停顿的。始终饱有乐观的精神,去面对去探索。</p> <p>  读书时看到,“历史研究之于霍夫斯塔特,实在是一种表达人类情感的慰藉心灵的最佳实践方式”。若换做我自己的话来说,开放科学或者开放研究,对于我来说就是一种表达我内心,慰藉心灵和休息的最佳方式。</p> <blockquote> <p>麻辣有时要比干辣香。</p> </blockquote> <p>  同时的是这个也是满足与时代发展要求。是我个人意义上的,我的社会性和我的尊严的张扬。你渴望得到社会的认可,这也是一种满足。即也是一种社会精神气质的一种反应,学术发展状况的一种可能性。当然也可能稍显无力或过早。但是这种积极的心态,心态和想法,实际上呢,终于依然始终属于社会中的进步部分,这使我开心。</p> <p>  历史相似之处不断上演,正一如霍夫斯塔特所持有的观点,我们目前所关注的新的主要矛盾,自然地由物质资源分配的数量,转向到整个社会性资源分配的质量。所将要发生的也可能将是社会地位不断变化的,对这种社会进步的牺牲的关怀,这也就是一种人文关怀。</p> <p>每一次我在走动的时候,在看书的时候,或在发呆、书写的时候,都会产生各种各样的想法,或说念头。这种想法有的时候是无法通过文字及时记录下来,也就是说无法通过一个即刻的记录,总有个时间延长的过程。所以说我经常需要把想法整理,有时又是推倒掉,有时会被自己所写吓到。还好反观内容,实际犯了很多错误,使我稍感宽慰。原来还是自然的表达,多了些愚蠢,少了些冲动。</p> <p>自己没有读很多书,只是随想到的,就放下字来,单薄了些。不过也没太多人在意,就写给自己做份纪念,跟随我自己之前的脚步。</p> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2021/6/13
阅读更多

开放研究是如何直面命题

<p>  正如《西西弗斯》中加缪所言,自杀是一个哲学命题,这里将对这一命题的进行一点点讨论,以便对人们的一些想法进行一定的解释。 为避免歧义,这里所指的自杀并非结束自己的生命,而是指一个人选择思想停滞的方式,也就是作为人类思想的一个特有行为来进行解读,缩小了讨论的范围,新命名为“自戕”。</p> <p>  首先介绍人类的一些思想的特质,如人拥有记忆,人有反思的能力,人的思维是可以通过反思进行自我调节和改变的等等。这时我们必须提到的是,社会中总有一些人认为社会的某些现象是无法改变甚至是轮回的,因此这些人认为这样的事情可以用一种思维理解就是“你必须这样做”或言“你只有这样做”,举例为吃苦的轮回问题,这些人认为“我吃过这样的苦,你只有也尝尝甚至尝个够才能明白”,这些人所为并不是为了这种苦头的避免而是认为这种苦头是轮回的是无法改变的,其实纵观社会的发展社会总是不断变化的不断发展的,正如马克思所言“一切现在的都是要灭亡的”,那么为什么这些人形成了“就是这样”的无法做任何改变的想法了呢?</p> <p>  分析可以得到,他们的思想选择了停滞,这种停滞一方面来自于自己的无办法另一方面来自外界的无帮助,似乎是可以理解的,然而,生命的本质就是在于不断地发展,更何况于有着思想的人类呢?所以这种停滞即违反了人的生命的初衷,违反了生命,而且是出于个体的主动,是有人自发地说“有些事情就是这样无法改变的”,正是走向了“自戕”,这是一种思维上的精神上的情感上的主动选择的思维停滞,因此我们这里用了双引符号。</p> <p>  这里可以进行一些讨论,因为这些话语并非是他们自己内心的自述,而是没完没了地灌输于他人还要说给别人听,如传统研究中所讲“只有问才行才能学到东西,只有你去问别人才有交流”,这当然是普遍发生的,可是上述这种“你只有这样做”等等的说法,由上一段的讨论后已经得出是一种“自戕”,那自己选择思想停滞就得了为何要说给别人听?这时候说给别人听了,其意义即”陪葬诉求“,这正是人矛盾的一面,明明是”自戕“却需要他人来一同见证,自己进行了选择不行非要拉别人一起垫背不可,这也正说明了从古至今所阻碍人类社会发展的封建意识形态为何可以一再地存续,“陪葬诉求”正是其传染性本身。</p> <p>  从上面所言可以看出,所谓“你只能怎样”正是“自戕”的疯狂所伴随的“陪葬诉求”,那么如何避免和转变这样恐怖的思维呢?这里当然,语言本身就反映了思维的框架,所谓“只能”或“你应该”完全是限定性的,而且是非常紧迫的限定,只要打破这一限定即可以找到新的思维。最简单直接的方式,就是换新的语言词汇,如“你可以”,“你尝试”,“你试着”,“你参考一下”,这种新的语言范式,虽然看起来简单而无趣,却实有本质的不同。开放研究所要采用的正是这样的语法。本质上这与冗余理论是相契合的,保证了对冗余存在的肯定,给发展(生命)留下了空间。开放研究的发展这是一个长期的过程,并且非常容易面临冲击,采用这种新的语言方式则是非常有帮助的。</p> <p>  当然有些人可能说,上面所讲的太极端了,比如“你只能这样做才可以”,即使“只能”一词是限定性的,可是具体的“这样做”本身,也不是完全限定的,也是可以想新的花样可以有丰富的细节。这种想法也是正确的,上面的讨论本身也不能陷入怪圈,成为一种新的限定性的办法,这不就回到出发点了吗?所以说,一旦你提出这种疑问,就说明你已经开始尝试上述讨论的思维过程了,参与即完成了一次思想交流。上面所讨论的所有东西,都是给予一个方法,这正揭示了开放研究的一些思想,也就是尽力地给予人们研究问题的科学方法,这一段的这个例子也即是说明了其重点不在研究内容而在于研究方法。你可以套用上述方法在很多的问题上,尤其希望在你遇到重大困难时绝不会孤立无援,在思想上能够助你一臂之力。</p> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2019/2/21
阅读更多

试对开放研究的评论2

<p>AOD还有类似的机构都可以直接在网络上参与,CERN和LIGO等实验均有开放的数据</p> <p>随着社会发展,越来越多的人将会走上终身学习的道路,而不断出现的新生儿们他们所接受的教育质量在不断提升,后来人学习领悟知识和创新的速度会不断提高,客观上导致比我们更小的年轻人正在光速追赶甚至很快就会在各方面超越,这恐怕是客观上将要发生的事情。比如在网上我有认识的小孩,现在刚刚上大一就已经对linux系统信手拈来就搞个桌面程序,他们的网络视野非常宽广。另外的话,就拿明年来说,2020年中国就要消灭绝对贫困,一个这样没有贫困人口的国家,在2020年中出生的小朋友们无疑是历史上的黄金一代,所谓的人工智能也不断涌现。面对这样的情况,先来人的我们必然面临淘汰,如果没有适当的淘汰机制则意味着冲突,在21世纪的今天冲突无疑不是我们所追求的,那么能化解和促进这样问题的,无疑就是开放研究。这也就是开放研究出现的客观情况,我想也是社会发展的必然。</p> <p>可以看一下CERN的Opendata Portal,在17年的11月份左右就建立这样的系统了。CC0协议,是Opendata Portal 所采用的版权协议,恰巧从小米手机”小米CC“的翻译上我们也可以看到CC还可以翻译成Chic &amp; Cool,很有趣。</p> <p>现在刚开始有零星的尝试,随后继续发展到open notebook也是有可能的,等到那个时候,每个人都有机会开展自己的研究,那时又可以说物理学依然是科学界最为先锋的学科之一,这样也将会赢得历史的尊重。</p> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2018/12/23
阅读更多

开放研究之所以可能(二)

<p>(不是引言)以下全文所讨论的错误系统其名字容易给人产生误导,晚上和同学聊天的过程中,同学指出逻辑上构建的系统并不是隐含着错误,而是逻辑系统本身是没有错误的,这种系统的描述可能无法完备,所以这里其实应将错误系统名字修改一下,为冗余系统。这是一个恰当的名字,但是由于下面内容均是参考,所以尊重作者以下依然成为错误系统,当然其实并没有什么错,而是有一些发展的可能,即冗余。</p> <p>为了更好地了解和思考开放研究的可能性,这里引入一些概念来进行讨论,对科学研究过程中出现的一些问题进行所谓消避错,并且重新讨论消避错过程中的可信任问题。之所以看到错误系统这本书,只是闲来瞎逛碰到的</p> <p>一、错误存在的判别规则和变动规律</p> <p>1.定义与描述</p> <p><strong>定义1.1</strong>  设 <script type="math/tex">S=[S_{0},S_{1}]</script>,<script type="math/tex">K=\left \{ (x,y,z) | a \leqslant x \leqslant b, c\leqslant y \leqslant d, e\leqslant z \leqslant f \right \}</script>,<script type="math/tex">Z=\left \{ z_{1},z_{2},,z_{n}\right \}</script>,<script type="math/tex">M=\left \{m_{1},m_{2},,m_{i}\right \}</script>,其中S是一个时间集,K是空间集,Z是专业组成的集,M是目的集. 显然,开放研究的发展是时间的函数.</p> <p><strong>定义1.2</strong>  这里定义规则,设G是一组规则,<script type="math/tex">D=S*Z*M*K</script>,若映射<script type="math/tex">f:D\rightarrow G</script>,则称f是错误判别规则函,简称规则函数,记为, <script type="math/tex">G=f(D), G=f(s,k,z,m), G=G(s,k,z,m).</script> 规则函数的理解:</p> <p>a.<script type="math/tex">G=f(s,k_{0},z_{0},m_{0})=f(s).</script>解释为,空间和领域和目的一定时,规则仅为时间的函数.</p> <p>b.<script type="math/tex">G=f(s_{0},k,z_{0},m_{0})=f(k).</script>解释为,时间和领域和目的一定时,规则仅为空间的函数.</p> <p>c.<script type="math/tex">G=f(s_{0},k_{0},z_{0},m_{0})=f(k).</script>解释为常数规则记为<script type="math/tex">G=G_{0}</script>.</p> <p><strong>定义1.3</strong>    义规则函数的运算律,有<script type="math/tex">G_{1}-G_{2}, G_{1}\wedge G_{2}, G_{1}\vee G_{2}</script></p> <p><strong>定义1.4</strong>    定义规则函数的交互作用,设<script type="math/tex">G_{1}</script>和<script type="math/tex">G_{2}</script>的论域分别为<script type="math/tex">U_{1}</script>和<script type="math/tex">U_{2}</script>,<script type="math/tex">U_{3}=U_{1}\vee U_{2}</script>,G3是U3上规则函数,且有<script type="math/tex">G_{3}=G_{1} \vee G_{2}</script>,若<script type="math/tex">\forall a \in U_{3}</script>且对<script type="math/tex">G_{1},G_{2},G_{3}</script>有错误值z1,z2,z3且<script type="math/tex">z_{3}=min[z_{1},z_{2}]</script>,则称G1与G2对于论U3是无错误交互作用,否则有交互作用.</p> <p><strong>定义1.5</strong>   若p是一个命题,则称<script type="math/tex">\bar{p}</script>称为p的非,记为-p,若对规则<script type="math/tex">G_{1}={g_{1},g_{2},...,g_{n}}有G_{2}={-g_{1},-g_{2},...,-g_{n}}</script>,则记 <script type="math/tex">G_{2}=-G_{1}</script>.</p> <p><strong>命题1.1</strong>   规则的负满足<script type="math/tex">-(-G)=G</script>,由此规则可以得到自由<script type="math/tex">L=G+(-G)</script>.其实我们这里可以定义<script type="math/tex">0=L</script>.</p> <p><strong>定义1.6</strong>   设G是U上一组无错误规则,若<script type="math/tex">\forall a \in U</script>,a对于G的错误值是t,而对于U上任意一组无错误规则Gi的值是ti,且均有<script type="math/tex">t\leqslant t_{i}</script>成立,则称G是U上一组完备规则,记为<script type="math/tex">\omega U(G)</script>. 对这样的一组完备规则G,可称之为论域U上有资格的规则.</p> <p><strong>定义1.7</strong>   首先这里定义错误判别规则的等价,若有<script type="math/tex">G_{1}\leftarrow G_{2}, G_{1}\rightarrow G_{2}</script>,则称G1与G2等价记作G1~G2.接上,若有两等价规则,且G1是G2的真子集,则G1优于G2,可以记作<script type="math/tex">G_{1}&gt;G_{2}</script>. 在论域U中,若G1在U上完备,G2在U上不完备,则G1优于G2,还有如果G1比G2更容易实施,则G1优于G2.</p> <p>2.错误判别规则的建立或识别错误的模式.</p> <p>二、错误系统的基本结构和特点 1.基本特点 层次等级性和多侧面性,也就是说错误系统中研究的对象是有层次有等级,反映出随着问题探讨的深度与方面,会呈现出不同的等级,反映出不同的侧面,像洋葱一样. 2.错误系统的基本结构及拓铺 串联型与连锁性 并联型与扩缩性 反馈型与循环性 蕴含型与中心性</p> <p>3.系统的基本分类 整体错误系统 因果错误系统 错误系统的独立与联系 循环错误</p> <p>三、消避错的基本形式 错误系统的结构变换</p> <p>要素与打断 产生与消除 置换与增加</p> <p>四、可信任问题的讨论 论域与规则的变换</p> <p>可信任问题的论域与规则</p> <p>五、可计算与示例 简单问题的计算与示例</p> <p><em>以上内容参考自《错误系统》(郭开仲著)</em></p> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~未完待续~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2018/11/15
阅读更多

试对开放研究的评论1

<blockquote> <p>(引言)为什么要有开放研究与开放科学两个名字呢?在我的小站里就写成是开放研究了,因为觉得“研究”二字既是名词也是动词,而开放科学是一个不断发展的概念,所以用动词“研究”来描述更有活力一些。</p> </blockquote> <p>一、同文艺评论的类比</p> <p>  我们在欣赏艺术作品时,难免会想这个作品的水平是怎么样的?这个作品相比于其他的有什么异同?有哪些优秀的方面?有什么历史渊源?长久以来的艺术形式太多,纷繁复杂,如何鉴赏艺术作品这一问题已经不单单是看的好看听着好听那样简单了,鉴赏家们逐渐引导人们建立了有效的评价方式,也就被称为_文艺评论_,其形式多种多样,有非常专业的方法。所以下面,同样地,对于开放研究这种富有个人特质的、每个人自由选择研究方式的活动,也可以试着对其进行一些评论,寻找其中的风格和特色,我想这将是非常有趣的,这也是对过往所看到的一些东西的梳理。</p> <p>二、从几个人来看</p> <p>  首先,来看看,王垠。垠神所擅长似乎是编程语言的开发,他对计算机科学有很深入的了解,曾在数个顶尖的学校学习,并且在微软google英特尔都有工作经历。其为人谦虚,他曾经想把计算机的基本结构讲一讲,后来觉得水太深就放弃了,曾说自己实在不擅长写书,然而,他的博文已经写了100多篇,其实还有很多未收录的篇幅网络上有,这些内容放在一起已经成书而且是带着他的一部分人生来书写的,很了不起。他对自动驾驶的简单论断,一语中的,自动驾驶案的结案确是惊慌失措。</p> <p>  第2位,阮一峰。本博客就是从阮一峰的文章起步的,字里行间可见他对自由软件运动的信心,并持之以恒地写东西。</p> <p>  第3位,李杀。这一位写的东西,则像很多人写的东西有点读不懂,有点神经质有点重口味,但是从这里开始引起我注意的正是下面的内容,钱。</p> <p>  是的,李杀的网站下面有链接<a href="https://www.patreon.com/">patreon</a>,他的网站是收费的;看一下王垠网站的二维码,也是收费;阮一峰的广告位?当然是收费的。可是他们的内容不是隐藏的,而是开放人人可读的,知识付费固然可取,然而人言可畏,“有不虞之誉,有求全之毁”。生活所迫,纷纷扰扰,开放研究者对金钱是如何看待的?“君子爱财,取之有道”,同样是选择方式做开放研究,这几位无疑做了最为大胆的探索。</p> <p>三、个人特质与我们的生活</p> <p>  开放研究有一些基本想法,而究竟如何做?如何发展?不会有限定的答案,否则将违背了开放本身。可是总归从一些人身上,我们可以读到很多东西。传统研究将人视为历史和社会的部分,可是辩证不可违,其矛盾面在这样片面的观点下正茁壮成长,发展为人格特质,二者相互激励。开放研究正是遵循这一基本规律,其开放本质与人格特质相结合,从裁定和规范人创造的科学研究行为转变为以发展的眼光,允许各自选择方式方法进行科学研究。其实这一过程也正在我们各自的生活中发生着。</p> <p>  在全球化下,人们相互之间的沟通益深,行业在欢迎每个人加入,人工智能的出现也在帮助这方面的发展,比如grammar软件,可以用来做英语词汇纠错和简单的语法匹配,虽然高级功能是收费的,但其实普通功能就很好用了;还比如知识分享的社区,经过对信息的筛选可以训练其背后的人工智能,来更快地获取方法,当然对于信息分享的态度也都是各有办法,V2EX不允许删除历史记录,豆瓣知乎等无历史记录可随意更改;甚至包括音乐上的分享,有musescore这样的平台,将各自或写或听得的乐谱上传上来,还有google magenta和google主页上的编曲小游戏,人工智能可以辅助作曲非常有趣,这些音乐是开放的每个人都可以玩一下。</p> <p>  可以看到,在这样那样的平台下,人人可以选择自己分享知识方法的方式方法,这种特别即是直接反映和肯定了每个人的人格特质,使每个人都有机会把握自己的生活。</p> <p>四、开放研究的有趣之处</p> <p>  3天之前,也就是19年3月12日,正值(WWW)万维网诞生30周年,蒂姆·伯纳斯·李提出互联网概念的初衷就是分享知识,然而出于对互联网健康发展的愿景,这位出生于1955年的英国勋爵再次重出江湖意图重振互联网。李勋爵重新建立了公司Inrupt,然后推行了[Contract of Web协议]和[SOLiD]的去中心化的新互联网服务,分别对应了守则和技术,当网速飞快提升,中心化趋势似成必然之时,依然坚守自己的道路。正好今天是315晚会,今年消费者所遇到的问题,正好就是印证了李勋爵的观点,而无疑他早早走在了大家的前面,计算机科学有这样的人在确实令人惊叹。</p> <p>  另外一个有趣的地方在于,所谓问题出在哪里?其实就如我这样普通人来说,又能提出什么问题呢?所谓出问题,最可怕的就是一大群人,他们早已知晓你的问题在哪里,甚至早已得到答案,然而他们不说不提,他们只是在旁边冷笑,常常会看到这种冷笑,这是非常之有趣的,这就是开放科学的一个有趣之处。当然可以看到做开放科学的人不会是这样的,他们多少要发一点声音,也许是帮助也许是无聊,甚至是胡闹,也可能是默不作声,但是他们报以理解,他们不会冷笑。</p> <p>  另外一个有趣的地方在于,所谓交流的概念?其实就如我这样普通人来说,又该如何参与交流呢?所谓交流,最可怕的就是一大群人,他们忘记了交流是相互的,从来交流都带着条件,条件呢又是不成文的规则(笑),硬生生把交流搞成了单流,规则呢则是有趣的,目的呢是高端的游戏,谈笑间跳起娇柔扭捏的舞蹈。开放研究则不同,是无任何趣味可言的,游戏是绝然没有的,开放的交流先要做的是分享是共享,尽量排除双方的任何条件,双方主动参与,然而他们是奇怪的,在此基础上所谓分歧他们是不懂的,所谓创造也只是他们的心跳,所谓科学也只是他们的呼吸也没有在意,他们竟然也是不会笑的,他们只是下棋,棋面则是最后达成的合同,写成一份文件作为棋谱,名为协议。</p> <p>  当人们困惑之时,却极易发现开放研究的乐趣,就在于那些想要帮助我们的人,正在不遗余力地进行着奋斗,我们只要张开双臂拥抱他们就可以了,那么轻松那么自然。可是有些人,当邻居家煮了一些饺子敲敲门想让我们尝尝,我们却大叫,“什么意思?难道嘲笑我不会煮饺子吗?”,却因此而噤若寒蝉,莫非是一种高端的幽默吗?</p> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2018/10/23
阅读更多

高能物理实验展望

<p>高能物理实验目前虽然自己已经接触到了,但是由于仅仅是做实验数据统计分析,所以只是做了一个螺丝钉,久而久之极易忘却物理本身。这里试着快速抄一点东西看一看,以便使自己尽可能成为实验物理研究的一员。最近也看到是北京正负电子对撞机建成30周年,也祝愿中国的高能物理事业蒸蒸日上。 在之前<a href="http://chuansong.me/n/669376351760">杨振宁的文章</a>中我们可以看到,其对加速器物理不无悲观态度,提出应该探寻新型加速器的可能。自己懂不多,这里分成两种,一是新的技术旧的物理过程,二是探索新的物理过程。</p> <p>##旧的对撞,新的加速器技术 首先要提及的是旧的对撞是什么意思,也就是要看一看大体上世界上的对撞机都是什么基本粒子的对撞。 旧的对撞也就是带电粒子通过电磁相互作用进行操纵后进行对撞,新的技术,则可以了解一下激光加速。</p> <p>激光尾波场加速原理,有很大的加速梯度,粒子团簇中的粒子数目,发散角,能谱宽度都是重要的指标,目标是产生能量单色性好的电子束。大振幅静电波,等离子体波,等离子体电子密度,相速度与最大振幅有关。尾波场模式与激光脉冲长度有关</p> <p>##新的对撞 对撞的基本粒子与过去不同,这样的讨论有许多,如gamma-e,或者e-p,等等。</p> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2018/10/12
阅读更多

试做名词解释

<p>这里试着对一些接触到的名词进行了解,避免因为专业词汇产生障碍,当然很多可能理解错误随着学习会再修改。这里绝不做科普,所以可能需要数学描述和公式的展示,或者易于了解的参考文献,但是碍于水平依然要之后修改。最近刚刚配置兼容了公式。</p> <blockquote> <ul> <li>连续区?共振区?原子核反应理论?</li> </ul> </blockquote> <blockquote> <ul> <li>词源分析: Topology? 拓扑topo一词的词源是“处所”的概念[希腊空间概念的发展],后来发展为“空间”,而在数学中由于对空间的研究引申为“几何”,在对几何的分析中发现需要对几何进行刻画又有了“分类”的意思。计算机常用该词来描述网络的连接和分布情况。至于为何高能物理实验中对衰变道的描述要使用这词,首先想到的是分类的概念,即对粒子的衰变情况进行分类,而至于是否有说明衰变前后双方的数学空间有在连续的变换下不变的性质有可能。</li> </ul> </blockquote> <blockquote> <ul> <li>了解什么是龙格库塔方法?了解什么是Hough transform?霍夫变换 可能是数值计算偏微分方程的一个算法,经过共形变换霍夫变换后,可用来帮助径迹拟合,得到更精确的结果。</li> </ul> </blockquote> <blockquote> <ul> <li>了解什么是龙格楞次矢量? 想起来面试时候问到龙格库塔方法,我还以为是问隆格楞次矢量,我们都知道关于动量守恒的扩展,有角动量守恒,还有一个守恒的动量,中心立场下LRL矢量(拉普拉斯-隆格-楞次矢量)和哈密顿量対易。另外在量子力学中,在<a href="https://www.zhihu.com/question/38127085/answer/75000258">回答</a>中,讨论有关薛定谔方程计算氢原子外自由电子体系简并自由度如果只考虑角动量,则为2l+1,因此单单角动量数学空间是不够的需要加入该LRL矢量,这时才得到了正确的简并度,也说明了LRL矢量的重要性,不应忽略。 如果没有理解数学空间?那在21世纪的今天,所谓数学恐怕就白学了,忘记了就再看看吧<a href="http://open.163.com/movie/2013/3/T/0/M8PTB0GHI_M8PTBUHT0.html">数学之旅</a></li> </ul> </blockquote> <blockquote> <ul> <li>了解什么是轻子普适性?Lepton universal 在标准模型拉氏量中,三代轻子与其他场的耦合均有相同的耦合常数,也就是参与相互作用的强度是相同的。实验上用比值来进行测量,和CP破坏的算式有些类似。</li> </ul> </blockquote> <blockquote> <ul> <li>了解什么是R值?</li> </ul> </blockquote> <blockquote> <ul> <li>了解什么是MCtruth信息?</li> </ul> </blockquote> <blockquote> <ul> <li>了解什么是Double Counting? 什么是Crossover概念?</li> </ul> </blockquote> <p>Double Counting 从名字上看就是数了两次,当产生两个不同的ExclusiveMC时,虽然看起来是不相同的物理衰变过程,但是如果其中的衰变有交叉的物理过程,则可能重复数了一次,这时我们要想办法减少一次以便和物理符合。 (之前的错误理解)Crossover Background 有些类似,当研究两个不同的衰变时,由于这两个衰变之间有共轭的关系,则有可能一个衰变成为另一个衰变的本底,这个时候可以使用其中一个衰变的MC来对另一个过程进行检验,如出现峰值背景则有可能出现了交叉本底的情况。</p> <blockquote> <ul> <li>了解什么是Hidden Charm?Open Charm?</li> </ul> </blockquote> <p>这个名字起的很有意思,这里来看看。首先这个是在粲物理中常用的名词,这里的Charm指粲夸克(c),这两个名字指代不同的能区,能区的分界线由该能区粒子的衰变产物所描述,也就是D介子,D介子是携带粲夸克的最轻粒子,在此能区之上将会可能产生由粲夸克参与构成的粒子如可衰变为DDbar,在此能区之下所产生的粒子则难以包括粲夸克(DDbar产生不了了),并且两个能区的衰变道不同是分开的。这个名字起的非常有趣,过度解读一下,可能是由于我们不知道这粲夸克去哪了所以我们说它藏起来了(Hidden),能量转化竟然变成其他的夸克。当然我们现在知道并不一定如此,也有前述的能量阈值之上的粒子与之下的衰变发生较强的耦合,这种粒子我们称之为奇特态(exotic state)。</p> <p>由此推想,还可以继续起名字,即Open Bottom,Hidden Bottom。在B物理中,存在同样的特殊的衰变产物,Upsilon介子,是携带b夸克的最轻的粒子,那么我们可以称可以产生Upsilon介子的能区为Open Bottom,能区之下难以产生则称之为Hidden Bottom。这里我们还可以注意的是,首次观测到的b夸克物质就是Upsilon介子,而首次观测到的粲夸克物质是J/psi粒子而不是D介子,这是由于D介子多由$D D\bar$能区产生,该能区高于J/psi粒子产生的能区,因而首次发现的含粲夸克的粒子即为J/psi粒子。</p> <blockquote> <ul> <li>了解什么是Fast Simulation?什么是Full simulation?</li> </ul> </blockquote> <p>两个都是指粒子物理实验常用的随机模拟方法,其中Full Simulation非常厉害,基本上在建造实验装置前可以用它来进行很全面的模拟,可以对实验目标的可行性和设计方案给出一定的评估。原因就是,这个Full说明了它在进行模拟时,可以构造探测器的几何结构还可以配置其中的物质成分,当实验发生时可以用构造一个模拟系统,来利用现有的相互作用理论模拟其中的粒子发生相互作用的一些基本过程,可以考虑几何结构,就可以对实验设计的具体情况进行调整和评估。在探测器运行阶段,则如可以使用Geant4[https://linkinghub.elsevier.com/retrieve/pii/S0168900203013688]通过模拟来估计探测器响应,现在似乎已经出来Geant5了。</p> <p>Fast Simulation,就是仅仅考虑了实验可能得到的结果,基于ROOT的TGenPhaseSpace来做简单的相空间模拟,对于探测器结构也基本用ROOT就可以做出,然后物理特性用Smear的方法,对预计的物理分布进行展宽,这样模拟考虑的没有Full那样全面,只能看看可行性,只用相空间产生的话有些实验可能不够,只是进行粗略的估计。 当然其实这是做模拟的才明白,自己是做数据分析仅做了解。</p>

2018/7/18
阅读更多

如何问问题?

<p>什么是一个好问题?</p> <p>想要搞清楚这个非常之难,是反映水平的直接方式,听报告自己没有问过问题,主要听听别人怎么问,这里只能管窥。一个好的问题,我想可以问该研究中关注的重点,有想法也可以提供帮助对策,也可以问及自己研究与该研究有交集的部分,如果能为听闻的所有人都有帮助也很不错,或者对该研究想法的延伸和见解。还有经验丰富的人对新手的关照和严格要求也是很好的问题,类似于围棋中的执导棋,例如有老师问过:分析中出现了运动学拟合,那么在运动学拟合之后粒子动量的“测量精度”是变好了?还是变坏了?答案是变好了,可能还要继续问其程度会约有多大能不能量化有没有百分比?还没有搞懂,需要待了解后再答。</p> <p>可以问一些什么问题?</p> <ul> <li> <p>当然其实只要有问题想问就能问,不过不要’为了问’而问,要动脑子而不是走形式。</p> </li> <li> <p>当探测相同的例子或衰变道时,如出现几个费曼图来表示多个物理过程在一起测量时,可以询问是否在实验中考虑了overlap。这是因为在散射截面的测量中,量子力学给出不同振幅的叠加会出现相干项,振幅不是平方相加的而是相加后再平方。而在实际的实验中,有时候这种overlap项是探测装置不容易捕获进行分析的,所以有时候需要进行特殊处理。</p> </li> <li> <p>当拟合出来的不变质量谱出现明显不明“身份”的峰值,可以问一问是什么,涉及背景分析,一般好的研究都会了解每个峰值背景的贡献成分是什么,不会放着不管的,当然有时候是大家都知道就不说了,也可以问问身边的人。除此之外,看到的实验分布若有意料之外的形状改变(没错,应该在画出图之前先预想一下物理分布是什么样的),都意味着实验探测对原物理分布做了修正,这种修正也是实验非常关心的,都是大家想要探讨清楚的内容。</p> </li> </ul> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2018/7/17
阅读更多

如何用ROOT做联合拟合?

<p><em>“你本来不该知道这些的,可是现在我们没有更好的工具,所以得这样弄一下……”</em></p> <p><strong>如何做联合拟合?</strong></p> <p>首先这里就是应用Roofit的例子(Tutorials)来学习做联合拟合(SimutaneousFit),这是一个比较常用的东西,当利用多个衰变道来重建共同的共振态时,可能要share一些变量,这样在拟合中可以得到描述该共振态共同的变量值,进而完成拟合。</p> <p>这里就试着来看看例子</p> <div class="language-plaintext highlighter-coderay"><div class="CodeRay"> <div class="code"><pre><span class="line-numbers"> <a href="#n1" name="n1">1</a></span>首先这里是个声明,在总的ROOT体系里使用了[LGPL2.1协议](https://root.cern.ch/license),这位WouterVerkerke贡献了该例子 <span class="line-numbers"> <a href="#n2" name="n2">2</a></span>////////////////////////////////////////////////////////////////////////// <span class="line-numbers"> <a href="#n3" name="n3">3</a></span>// <span class="line-numbers"> <a href="#n4" name="n4">4</a></span>// 'ORGANIZATION AND SIMULTANEOUS FITS' RooFit tutorial macro #501 <span class="line-numbers"> <a href="#n5" name="n5">5</a></span>// <span class="line-numbers"> <a href="#n6" name="n6">6</a></span>// Using simultaneous p.d.f.s to describe simultaneous fits to multiple <span class="line-numbers"> <a href="#n7" name="n7">7</a></span>// datasets <span class="line-numbers"> <a href="#n8" name="n8">8</a></span>// <span class="line-numbers"> <a href="#n9" name="n9">9</a></span>// 07/2008 - Wouter Verkerke <span class="line-numbers"> <strong><a href="#n10" name="n10">10</a></strong></span>// <span class="line-numbers"> <a href="#n11" name="n11">11</a></span>///////////////////////////////////////////////////////////////////////// <span class="line-numbers"> <a href="#n12" name="n12">12</a></span> <span class="line-numbers"> <a href="#n13" name="n13">13</a></span>// 头文件,名字起的很有代表性,大家用的程序要有编程规范,不然容易乱套 <span class="line-numbers"> <a href="#n14" name="n14">14</a></span>// 其实主要是需要编译时最需要,不过编译好久没有用了,现在我不太会了忘记了,一般找个MakeFile比较好 <span class="line-numbers"> <a href="#n15" name="n15">15</a></span>// CMake是用来写MakeFile的编译工具,很有意思,MakeFile用来指挥编译按步骤进行,CMake用来写指挥MakeFile如何写 <span class="line-numbers"> <a href="#n16" name="n16">16</a></span> <span class="line-numbers"> <a href="#n17" name="n17">17</a></span>#ifndef __CINT__ <span class="line-numbers"> <a href="#n18" name="n18">18</a></span>#include &quot;RooGlobalFunc.h&quot; <span class="line-numbers"> <a href="#n19" name="n19">19</a></span>#endif <span class="line-numbers"> <strong><a href="#n20" name="n20">20</a></strong></span>#include &quot;RooRealVar.h&quot; <span class="line-numbers"> <a href="#n21" name="n21">21</a></span>#include &quot;RooDataSet.h&quot; <span class="line-numbers"> <a href="#n22" name="n22">22</a></span>#include &quot;RooGaussian.h&quot; <span class="line-numbers"> <a href="#n23" name="n23">23</a></span>#include &quot;RooConstVar.h&quot; <span class="line-numbers"> <a href="#n24" name="n24">24</a></span>#include &quot;RooChebychev.h&quot; <span class="line-numbers"> <a href="#n25" name="n25">25</a></span>#include &quot;RooAddPdf.h&quot; <span class="line-numbers"> <a href="#n26" name="n26">26</a></span>#include &quot;RooSimultaneous.h&quot; <span class="line-numbers"> <a href="#n27" name="n27">27</a></span>#include &quot;RooCategory.h&quot; <span class="line-numbers"> <a href="#n28" name="n28">28</a></span>#include &quot;TCanvas.h&quot; <span class="line-numbers"> <a href="#n29" name="n29">29</a></span>#include &quot;TAxis.h&quot; <span class="line-numbers"> <strong><a href="#n30" name="n30">30</a></strong></span>#include &quot;RooPlot.h&quot; <span class="line-numbers"> <a href="#n31" name="n31">31</a></span> <span class="line-numbers"> <a href="#n32" name="n32">32</a></span>// 命名空间,像一种局部用的目录,防止重名,当然没遇到重的所以暂时还不懂 <span class="line-numbers"> <a href="#n33" name="n33">33</a></span>using namespace RooFit ; <span class="line-numbers"> <a href="#n34" name="n34">34</a></span> <span class="line-numbers"> <a href="#n35" name="n35">35</a></span>void rf501_simultaneouspdf() <span class="line-numbers"> <a href="#n36" name="n36">36</a></span>{ <span class="line-numbers"> <a href="#n37" name="n37">37</a></span> // C r e a t e m o d e l f o r p h y s i c s s a m p l e <span class="line-numbers"> <a href="#n38" name="n38">38</a></span> // ------------------------------------------------------------- <span class="line-numbers"> <a href="#n39" name="n39">39</a></span> // Create observables <span class="line-numbers"> <strong><a href="#n40" name="n40">40</a></strong></span> // 这里首先定义了变量x用来构建实验分布的模型 <span class="line-numbers"> <a href="#n41" name="n41">41</a></span> RooRealVar x(&quot;x&quot;,&quot;x&quot;,-8,8) ; <span class="line-numbers"> <a href="#n42" name="n42">42</a></span> <span class="line-numbers"> <a href="#n43" name="n43">43</a></span> // Construct signal pdf <span class="line-numbers"> <a href="#n44" name="n44">44</a></span> // 定义了信号的概率密度函数,这里有中心值、sigma自变量x一起构造高斯函数 <span class="line-numbers"> <a href="#n45" name="n45">45</a></span> // 经常有听到拿“形状”,指的其实就是概率密度函数的形状 <span class="line-numbers"> <a href="#n46" name="n46">46</a></span> RooRealVar mean(&quot;mean&quot;,&quot;mean&quot;,0,-8,8) ; <span class="line-numbers"> <a href="#n47" name="n47">47</a></span> RooRealVar sigma(&quot;sigma&quot;,&quot;sigma&quot;,0.3,0.1,10) ; <span class="line-numbers"> <a href="#n48" name="n48">48</a></span> RooGaussian gx(&quot;gx&quot;,&quot;gx&quot;,x,mean,sigma) ; <span class="line-numbers"> <a href="#n49" name="n49">49</a></span> <span class="line-numbers"> <strong><a href="#n50" name="n50">50</a></strong></span> // Construct background pdf <span class="line-numbers"> <a href="#n51" name="n51">51</a></span> // 类似于前面构造二阶切比雪夫作为本底概率密度函数,a0和a1作为其中系数 <span class="line-numbers"> <a href="#n52" name="n52">52</a></span> RooRealVar a0(&quot;a0&quot;,&quot;a0&quot;,-0.1,-1,1) ; <span class="line-numbers"> <a href="#n53" name="n53">53</a></span> RooRealVar a1(&quot;a1&quot;,&quot;a1&quot;,0.004,-1,1) ; <span class="line-numbers"> <a href="#n54" name="n54">54</a></span> RooChebychev px(&quot;px&quot;,&quot;px&quot;,x,RooArgSet(a0,a1)) ; <span class="line-numbers"> <a href="#n55" name="n55">55</a></span> <span class="line-numbers"> <a href="#n56" name="n56">56</a></span> // Construct composite pdf <span class="line-numbers"> <a href="#n57" name="n57">57</a></span> // 再次定义变量f,作为最后构造的物理分布模型的自变量,所得值为上两函数的和,用了RooArgList类 <span class="line-numbers"> <a href="#n58" name="n58">58</a></span> RooRealVar f(&quot;f&quot;,&quot;f&quot;,0.2,0.,1.); <span class="line-numbers"> <a href="#n59" name="n59">59</a></span> RooAddPdf model(&quot;model&quot;,&quot;model&quot;,RooArgList(gx,px),f); <span class="line-numbers"> <strong><a href="#n60" name="n60">60</a></strong></span> <span class="line-numbers"> <a href="#n61" name="n61">61</a></span> // C r e a t e m o d e l f o r c o n t r o l s a m p l e <span class="line-numbers"> <a href="#n62" name="n62">62</a></span> // -------------------------------------------------------------- <span class="line-numbers"> <a href="#n63" name="n63">63</a></span> // Construct signal pdf. <span class="line-numbers"> <a href="#n64" name="n64">64</a></span> // NOTE that sigma is shared with the signal sample model <span class="line-numbers"> <a href="#n65" name="n65">65</a></span> RooRealVar mean_ctl(&quot;mean_ctl&quot;,&quot;mean_ctl&quot;,-3,-8,8) ; <span class="line-numbers"> <a href="#n66" name="n66">66</a></span> RooGaussian gx_ctl(&quot;gx_ctl&quot;,&quot;gx_ctl&quot;,x,mean_ctl,sigma) ; <span class="line-numbers"> <a href="#n67" name="n67">67</a></span> <span class="line-numbers"> <a href="#n68" name="n68">68</a></span> // Construct the background pdf <span class="line-numbers"> <a href="#n69" name="n69">69</a></span> RooRealVar a0_ctl(&quot;a0_ctl&quot;,&quot;a0_ctl&quot;,-0.1,-1,1) ; <span class="line-numbers"> <strong><a href="#n70" name="n70">70</a></strong></span> RooRealVar a1_ctl(&quot;a1_ctl&quot;,&quot;a1_ctl&quot;,0.5,-0.1,1) ; <span class="line-numbers"> <a href="#n71" name="n71">71</a></span> RooChebychev px_ctl(&quot;px_ctl&quot;,&quot;px_ctl&quot;,x,RooArgSet(a0_ctl,a1_ctl)) ; <span class="line-numbers"> <a href="#n72" name="n72">72</a></span> <span class="line-numbers"> <a href="#n73" name="n73">73</a></span> // Construct the composite model <span class="line-numbers"> <a href="#n74" name="n74">74</a></span> // 这里可以看到,不同的“形状”代表了不同的实验分布,分别反映了信号概率密度函数形状,探测器分辨等 <span class="line-numbers"> <a href="#n75" name="n75">75</a></span> // 然后将他们“组合”也就是卷积在一起,来表达该物理过程我们想要了解的实验分布 <span class="line-numbers"> <a href="#n76" name="n76">76</a></span> RooRealVar f_ctl(&quot;f_ctl&quot;,&quot;f_ctl&quot;,0.5,0.,1.) ; <span class="line-numbers"> <a href="#n77" name="n77">77</a></span> RooAddPdf model_ctl(&quot;model_ctl&quot;,&quot;model_ctl&quot;,RooArgList(gx_ctl,px_ctl),f_ctl) ; <span class="line-numbers"> <a href="#n78" name="n78">78</a></span> <span class="line-numbers"> <a href="#n79" name="n79">79</a></span> // G e n e r a t e e v e n t s f o r b o t h s a m p l e s <span class="line-numbers"> <strong><a href="#n80" name="n80">80</a></strong></span> // --------------------------------------------------------------- <span class="line-numbers"> <a href="#n81" name="n81">81</a></span> // Generate 1000 events in x and y from model <span class="line-numbers"> <a href="#n82" name="n82">82</a></span> RooDataSet *data = model.generate(RooArgSet(x),100) ; <span class="line-numbers"> <a href="#n83" name="n83">83</a></span> RooDataSet *data_ctl = model_ctl.generate(RooArgSet(x),2000) ; <span class="line-numbers"> <a href="#n84" name="n84">84</a></span> <span class="line-numbers"> <a href="#n85" name="n85">85</a></span> // C r e a t e i n d e x c a t e g o r y a n d j o i n s a m p l e s <span class="line-numbers"> <a href="#n86" name="n86">86</a></span> // --------------------------------------------------------------------------- <span class="line-numbers"> <a href="#n87" name="n87">87</a></span> // Define category to distinguish physics and control samples events <span class="line-numbers"> <a href="#n88" name="n88">88</a></span> // 这里定义了一个目录其中命名均为字符串,所以名字里面空格会识别为字符,所以要谨慎,加不加空格是两个名字 <span class="line-numbers"> <a href="#n89" name="n89">89</a></span> RooCategory sample(&quot;sample&quot;,&quot;sample&quot;) ; <span class="line-numbers"> <strong><a href="#n90" name="n90">90</a></strong></span> sample.defineType(&quot;physics&quot;) ; <span class="line-numbers"> <a href="#n91" name="n91">91</a></span> sample.defineType(&quot;control&quot;) ; <span class="line-numbers"> <a href="#n92" name="n92">92</a></span> <span class="line-numbers"> <a href="#n93" name="n93">93</a></span> // Construct combined dataset in (x,sample) <span class="line-numbers"> <a href="#n94" name="n94">94</a></span> // 将数据导入到RooDataSet里面,其中有目录Index(sample),还有变量x,并将目录中的名字与数据集关联起来 <span class="line-numbers"> <a href="#n95" name="n95">95</a></span> RooDataSet combData(&quot;combData&quot;,&quot;combined data&quot;,x,Index(sample),Import(&quot;physics&quot;,*data),Import(&quot;control&quot;,*data_ctl)) ; <span class="line-numbers"> <a href="#n96" name="n96">96</a></span> <span class="line-numbers"> <a href="#n97" name="n97">97</a></span> // C o n s t r u c t a s i m u l t a n e o u s p d f i n ( x , s a m p l e ) <span class="line-numbers"> <a href="#n98" name="n98">98</a></span> // ----------------------------------------------------------------------------------- <span class="line-numbers"> <a href="#n99" name="n99">99</a></span> // Construct a simultaneous pdf using category sample as index <span class="line-numbers"><strong><a href="#n100" name="n100">100</a></strong></span> // 这里我们将之前定义的目录送入RooSimultaneous类中去,然后 <span class="line-numbers"><a href="#n101" name="n101">101</a></span> RooSimultaneous simPdf(&quot;simPdf&quot;,&quot;simultaneous pdf&quot;,sample) ; <span class="line-numbers"><a href="#n102" name="n102">102</a></span> <span class="line-numbers"><a href="#n103" name="n103">103</a></span> // 这里将之前定义的分布模型放到RooSimultaneous类的sample里面去, <span class="line-numbers"><a href="#n104" name="n104">104</a></span> // Associate model with the physics state and model_ctl with the control state <span class="line-numbers"><a href="#n105" name="n105">105</a></span> simPdf.addPdf(model,&quot;physics&quot;) ; <span class="line-numbers"><a href="#n106" name="n106">106</a></span> simPdf.addPdf(model_ctl,&quot;control&quot;) ; <span class="line-numbers"><a href="#n107" name="n107">107</a></span> <span class="line-numbers"><a href="#n108" name="n108">108</a></span> // 这里将数据进行拟合,拟合的目标物理分布的模型就是前面的 <span class="line-numbers"><a href="#n109" name="n109">109</a></span> // P e r f o r m a s i m u l t a n e o u s f i t <span class="line-numbers"><strong><a href="#n110" name="n110">110</a></strong></span> // --------------------------------------------------- <span class="line-numbers"><a href="#n111" name="n111">111</a></span> // Perform simultaneous fit of model to data and model_ctl to data_ctl <span class="line-numbers"><a href="#n112" name="n112">112</a></span> simPdf.fitTo(combData) ; <span class="line-numbers"><a href="#n113" name="n113">113</a></span> // 到此为止,就完成了拟合的计算过程,其实已经结束了,只是不直观要画图 <span class="line-numbers"><a href="#n114" name="n114">114</a></span> // 可以看出,RooSimultaneous就是一个类中包含了多个模型,这些多个模型的公共参数用来描绘共同的一个物理分布。 <span class="line-numbers"><a href="#n115" name="n115">115</a></span> // 这种多个模型,可以来自于不同衰变道,也可以来自于不同的样本如例子中随机产生的物理分布和控制样本。 <span class="line-numbers"><a href="#n116" name="n116">116</a></span> <span class="line-numbers"><a href="#n117" name="n117">117</a></span> // P l o t m o d e l s l i c e s o n d a t a s l i c e s <span class="line-numbers"><a href="#n118" name="n118">118</a></span> // ---------------------------------------------------------------- <span class="line-numbers"><a href="#n119" name="n119">119</a></span> // Make a frame for the physics sample <span class="line-numbers"><strong><a href="#n120" name="n120">120</a></strong></span> // 画图的RooPlot,用来载入画图的内容,在这里定义了分bin <span class="line-numbers"><a href="#n121" name="n121">121</a></span> RooPlot* frame1 = x.frame(Bins(30),Title(&quot;Physics sample&quot;)) ; <span class="line-numbers"><a href="#n122" name="n122">122</a></span> <span class="line-numbers"><a href="#n123" name="n123">123</a></span> // Plot all data tagged as physics sample <span class="line-numbers"><a href="#n124" name="n124">124</a></span> // 将数据画在上面定义的frame1中,并且通过Cut条件只看physics目录的内容 <span class="line-numbers"><a href="#n125" name="n125">125</a></span> combData.plotOn(frame1,Cut(&quot;sample==sample::physics&quot;)) ; <span class="line-numbers"><a href="#n126" name="n126">126</a></span> <span class="line-numbers"><a href="#n127" name="n127">127</a></span> // Plot &quot;physics&quot; slice of simultaneous pdf. <span class="line-numbers"><a href="#n128" name="n128">128</a></span> // NBL You _must_ project the sample index category with data using ProjWData <span class="line-numbers"><a href="#n129" name="n129">129</a></span> // as a RooSimultaneous makes no prediction on the shape in the index category <span class="line-numbers"><strong><a href="#n130" name="n130">130</a></strong></span> // and can thus not be integrated <span class="line-numbers"><a href="#n131" name="n131">131</a></span> simPdf.plotOn(frame1,Slice(sample,&quot;physics&quot;),ProjWData(sample,combData)) ; <span class="line-numbers"><a href="#n132" name="n132">132</a></span> // 这里可以看到是又画了一次,这次是单独画的本底用的kDashed的线,可以按后面给的方法搜索类型继续看 <span class="line-numbers"><a href="#n133" name="n133">133</a></span> simPdf.plotOn(frame1,Slice(sample,&quot;physics&quot;),Components(&quot;px&quot;),ProjWData(sample,combData),LineStyle(kDashed)) ; <span class="line-numbers"><a href="#n134" name="n134">134</a></span> <span class="line-numbers"><a href="#n135" name="n135">135</a></span> // 定义第二个图的画图的frame <span class="line-numbers"><a href="#n136" name="n136">136</a></span> // The same plot for the control sample slice <span class="line-numbers"><a href="#n137" name="n137">137</a></span> RooPlot* frame2 = x.frame(Bins(30),Title(&quot;Control sample&quot;)) ; <span class="line-numbers"><a href="#n138" name="n138">138</a></span> combData.plotOn(frame2,Cut(&quot;sample==sample::control&quot;)) ; <span class="line-numbers"><a href="#n139" name="n139">139</a></span> simPdf.plotOn(frame2,Slice(sample,&quot;control&quot;),ProjWData(sample,combData)) ; <span class="line-numbers"><strong><a href="#n140" name="n140">140</a></strong></span> simPdf.plotOn(frame2,Slice(sample,&quot;control&quot;),Components(&quot;px_ctl&quot;),ProjWData(sample,combData),LineStyle(kDashed)) ; <span class="line-numbers"><a href="#n141" name="n141">141</a></span> <span class="line-numbers"><a href="#n142" name="n142">142</a></span> // 定义好画布,将前面的frame调用Draw()成员函数,就画图了 <span class="line-numbers"><a href="#n143" name="n143">143</a></span> TCanvas* c = new TCanvas(&quot;rf501_simultaneouspdf&quot;,&quot;rf403_simultaneouspdf&quot;,800,400); <span class="line-numbers"><a href="#n144" name="n144">144</a></span> c-&amp;gt;Divide(2) ; <span class="line-numbers"><a href="#n145" name="n145">145</a></span> c-&amp;gt;cd(1) ; gPad-&amp;gt;SetLeftMargin(0.15) ; frame1-&amp;gt;GetYaxis()-&amp;gt;SetTitleOffset(1.4) ; frame1-&amp;gt;Draw() ; <span class="line-numbers"><a href="#n146" name="n146">146</a></span> c-&amp;gt;cd(2) ; gPad-&amp;gt;SetLeftMargin(0.15) ; frame2-&amp;gt;GetYaxis()-&amp;gt;SetTitleOffset(1.4) ; frame2-&amp;gt;Draw() ; <span class="line-numbers"><a href="#n147" name="n147">147</a></span>} <span class="line-numbers"><a href="#n148" name="n148">148</a></span>`&lt;/pre&gt; <span class="line-numbers"><a href="#n149" name="n149">149</a></span> <span class="line-numbers"><strong><a href="#n150" name="n150">150</a></strong></span>实际上,我们看完上面的内容就可以了解到**其实我们什么都没有做!**我们做的仅仅是: <span class="line-numbers"><a href="#n151" name="n151">151</a></span> <span class="line-numbers"><a href="#n152" name="n152">152</a></span>&lt;pre&gt;`头文件 <span class="line-numbers"><a href="#n153" name="n153">153</a></span>函数{ <span class="line-numbers"><a href="#n154" name="n154">154</a></span> 定义预期的多个模型model(RooAddPdf) <span class="line-numbers"><a href="#n155" name="n155">155</a></span> 数据data(DataSet),按照样本目录加载 <span class="line-numbers"><a href="#n156" name="n156">156</a></span> 调用联合拟合类(RooSimultaneous).fitTo(data) <span class="line-numbers"><a href="#n157" name="n157">157</a></span> 画图,信号本底 <span class="line-numbers"><a href="#n158" name="n158">158</a></span>} <span class="line-numbers"><a href="#n159" name="n159">159</a></span>`&lt;/pre&gt; <span class="line-numbers"><strong><a href="#n160" name="n160">160</a></strong></span> <span class="line-numbers"><a href="#n161" name="n161">161</a></span>其他的当然也是类似,是计算机帮我们完成了这些操作,当然如涉及到其背后是如何工作的则要继续了解simultaneous背后的数学是如何工作的,比如具体的误差它是如何计算的?整体上参数是如何传递,计算是如何迭代的?编程?不存在的,可以放后去了解。这也学就是我们称之为脚本的原因吧,之所以使用脚本文件,就是相应的程序包提供了简易的借口,可以对应用的用户功能进行自定义。那么有没有办法不写这么多字呢好头大啊?有的,有的人用Python来自动写脚本,有的人直接用PyROOT。 <span class="line-numbers"><a href="#n162" name="n162">162</a></span> <span class="line-numbers"><a href="#n163" name="n163">163</a></span>**使用Vim** <span class="line-numbers"><a href="#n164" name="n164">164</a></span> <span class="line-numbers"><a href="#n165" name="n165">165</a></span>如何使用vim? <span class="line-numbers"><a href="#n166" name="n166">166</a></span> <span class="line-numbers"><a href="#n167" name="n167">167</a></span>这个实际上吧vim的手册简单看一下,然后了解一下计算机发展过程,“文本”这个概念是如何发展的,就可以更好地使用vim,我自己在两年用了杨振伟老师推荐的一个简单的vimrc文件[易水博客](http://easwy.com/),还有重新编译了vim用来安装了[vim-snippets](https://github.com/cuixiaofei/vim-snippets)后,再没有怎么搞过了,我想snippets应该已经功能很强大了。 <span class="line-numbers"><a href="#n168" name="n168">168</a></span>想起来第一次用vim其实就和我小时候玩游戏一样,上来就键盘挨个按一遍,软件也是,把菜单打开所有按钮按一遍,这就是我从来看任何计算机相关东西的所谓“窍门”。 <span class="line-numbers"><a href="#n169" name="n169">169</a></span> <span class="line-numbers"><strong><a href="#n170" name="n170">170</a></strong></span>**继续试着学ROOT有什么方便的方法?** <span class="line-numbers"><a href="#n171" name="n171">171</a></span> <span class="line-numbers"><a href="#n172" name="n172">172</a></span>如果有机会找人教,可以问一下别人,或者有人给脚本,就可以学的很快,因为大家公用的东西都是比较成熟的。在简单用了之后,还要继续学懂一些,或者看到别的ROOT脚本文件有时候发现看不懂,甚至受到了惊吓,下面的一点内容我们试着想一想办法。 <span class="line-numbers"><a href="#n173" name="n173">173</a></span> <span class="line-numbers"><a href="#n174" name="n174">174</a></span>首先想到的就是,看一看例子tutorial,ROOT官方带有许多的例子,只要稍加更改就可以学到很多东西,上面篇幅中做联合拟合的内容就是依据这样的方式来做的,下面还有。 <span class="line-numbers"><a href="#n175" name="n175">175</a></span> <span class="line-numbers"><a href="#n176" name="n176">176</a></span>一个是搜索使用的类的定义和继承关系,在网站这里[ClassIndex](https://root.cern.ch/doc/master/annotated.html),比如可以试着搜索ProjWData这个成员,也可以在[ClassList](https://root.cern.ch/doc/master/annotated.html)用搜索框或者是按类找名字ctrl+f,这样搜索可以找到ROOT编程的详细内容。 <span class="line-numbers"><a href="#n177" name="n177">177</a></span>可以看到,其定义有两个如下: <span class="line-numbers"><a href="#n178" name="n178">178</a></span> <span class="line-numbers"><a href="#n179" name="n179">179</a></span>第一个定义可以看出,其可有两个变量,一是数据集RooDataSet(RooAbsData三个成员中的一个),从下面的继承图可以清楚地了解到程序的调用关系,第二个可能用于分bin的问题,![](/assets/img/RooAbsData.png) <span class="line-numbers"><strong><a href="#n180" name="n180">180</a></strong></span> <span class="line-numbers"><a href="#n181" name="n181">181</a></span>&lt;pre&gt;`RooFit::ProjWData ( const RooAbsData &amp;amp; projData, <span class="line-numbers"><a href="#n182" name="n182">182</a></span>Bool_t binData = kFALSE <span class="line-numbers"><a href="#n183" name="n183">183</a></span>) <span class="line-numbers"><a href="#n184" name="n184">184</a></span>`&lt;/pre&gt; <span class="line-numbers"><a href="#n185" name="n185">185</a></span> <span class="line-numbers"><a href="#n186" name="n186">186</a></span>从这里上下两个定义可以看出,ROOT软件包整体内部命名是十分规范的,我们在使用的时候也要尽量把变量函数名写的清楚易懂有一定的规范。如BES合作组的BOSS分析环境,可以查看BOSS定义的基本的类和继承图[BOSS Class Reference Documentation](http://bes3.to.infn.it/Boss/7.0.2/html/classes.html),这里可以清楚看到很多分析中使用的内容。当然,如果有较为统一的规范是不容易的,因为在传统研究中各种不同群体都有可能产生各自内部的“独特语言系统”。 <span class="line-numbers"><a href="#n187" name="n187">187</a></span> <span class="line-numbers"><a href="#n188" name="n188">188</a></span>第二个定义可以看出,其可有三个变量,一是从数据集里取数据的方法(RooCategory是其中一个),第二个见上,第三个可能用于分bin的问题 <span class="line-numbers"><a href="#n189" name="n189">189</a></span> <span class="line-numbers"><strong><a href="#n190" name="n190">190</a></strong></span>&lt;pre&gt;`RooFit::ProjWData ( const RooArgSet &amp;amp; projSet, <span class="line-numbers"><a href="#n191" name="n191">191</a></span>const RooAbsData &amp;amp; projData, <span class="line-numbers"><a href="#n192" name="n192">192</a></span>Bool_t binData = kFALSE <span class="line-numbers"><a href="#n193" name="n193">193</a></span>) <span class="line-numbers"><a href="#n194" name="n194">194</a></span>`&lt;/pre&gt; <span class="line-numbers"><a href="#n195" name="n195">195</a></span> <span class="line-numbers"><a href="#n196" name="n196">196</a></span>可以看出我们这里使用了两次,一次第一个定义,一次第二个定义,并且没有用bin变量。 <span class="line-numbers"><a href="#n197" name="n197">197</a></span>这样我们通过查看这些的定义关系,有助于梳理清楚他们的调用关系,用起来就不会发怵。 <span class="line-numbers"><a href="#n198" name="n198">198</a></span>所谓计算机程序就是一大堆的相互调用,从ifelse编译一直调用到逻辑门基本不会出错,如果出现问题,就查看定义看哪里调用跑丢了,如果能够解决好把调用的类型放对了,一般程序都能正常运行,就像喂小猫一样。 <span class="line-numbers"><a href="#n199" name="n199">199</a></span>如果想要训练一下编程时候的脑子,其实有更直观一点的编程比如说用G语言LabVIEW,你可以看数据流,并且简单的编程结构也比较直观,实际应用也比较广泛,比如BESIII值班室的用户界面系统,可以看到很多都是使用LabVIEW编的。另外甚至可以通过一些软件也能训练,如[Zachronic](http://www.zachtronics.com)公司旗下的软件都很硬核,还有辅助学习各种编程语言的网站[酷代码](www.codingame.com)非常有趣,很全各种计算机语言都能找到。 <span class="line-numbers"><strong><a href="#n200" name="n200">200</a></strong></span> <span class="line-numbers"><a href="#n201" name="n201">201</a></span>可以在网上[ROOT Forum](https://root-forum.cern.ch)看别人遇到了什么问题,如果身边没人也可以试着问,还可以看看同行都在关心什么问题? <span class="line-numbers"><a href="#n202" name="n202">202</a></span>这里提供一个问问题模板[参考](https://root-forum.cern.ch/t/how-to-automatically-generate-classes-code/4667): <span class="line-numbers"><a href="#n203" name="n203">203</a></span> <span class="line-numbers"><a href="#n204" name="n204">204</a></span>&lt;pre&gt;`Hi, <span class="line-numbers"><a href="#n205" name="n205">205</a></span>I want to do sth. <span class="line-numbers"><a href="#n206" name="n206">206</a></span>I have learned &quot;sth. or some class&quot; which helps me in doing sth. This looks like it could help me but I don't know HOW. <span class="line-numbers"><a href="#n207" name="n207">207</a></span>I need to to do similar processing but for a different &quot;sth.? dataset?&quot;. <span class="line-numbers"><a href="#n208" name="n208">208</a></span>Could some body guide me to the Documentation or Tutorials for doing this? <span class="line-numbers"><a href="#n209" name="n209">209</a></span> <span class="line-numbers"><strong><a href="#n210" name="n210">210</a></strong></span>Thanks <span class="line-numbers"><a href="#n211" name="n211">211</a></span>&quot;yourname&quot; <span class="line-numbers"><a href="#n212" name="n212">212</a></span> <span class="line-numbers"><a href="#n213" name="n213">213</a></span>Sample: &quot;your sample idea&quot; <span class="line-numbers"><a href="#n214" name="n214">214</a></span>Code:&quot;your sample code&quot; </pre></div> </div> </div> <p>可以找一个改改用,也可以直接随便问(English),毕竟是论坛嘛。主要是可以看看大家都在关心什么问题,可以了解一下。</p> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2018/6/24
阅读更多

开放研究之所以可能(一)

<p>开放研究之所以可能(一)</p> <p>开放研究?这是过去和现在很多人都做过的事情,这里放在一起想, 得出下面的基本方向,是通过对开放研究类似活动的一种再次发现与总结。 这里的“开放研究”是一个专有名词,并不是泛泛的“开放地研究”或者“开放的研究”</p> <p>开放研究的基本方向:</p> <ol> <li>把实干放在开放研究的第一位,实干具体就是下面这些,</li> <li>对于任何人,不得干涉或要求其进行开放研究。</li> <li>肯定每个人都有做自然科学或社会科学研究的能力。</li> <li>尊重每人的个人守则,尊重对开放研究自由的定义。</li> <li>要选定协议编辑科学研究的内容进行传播,尤其对具体科学研究的方法进行开放。</li> <li>对一直以来的传统科学研究的资料,阐述其中隐藏的研究方法,进一步简化和开放。</li> <li>进一步阐述历史和文化,搞清楚开放研究的历史和现实意义。</li> <li>采取各种合作的方式和方法进行和发展开放研究。</li> <li>这里每一条均可以进行修改或删除,视情况而定。</li> </ol> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2018/1/18
阅读更多

开放研究个人守则

<p>开放研究个人守则</p> <p>1.</p> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2018/1/10
阅读更多

什么是开放研究?

<p><strong>什么是开放研究?</strong></p> <p>科学的所指这里包括自然科学与社会科学,中国科学可能还不是最发达,很多人目前也和科学研究是接不上的。更进一步讲,可以说即使科学发达的国家(如现在欧美?),这种发达也不是每个人所能触及的。</p> <p>科学在的历史发展长河中更由那些聪明的人、有天赋的人、勤奋努力的人、富有的人、善于交际的人等等特别的一些人所主导和影响,这些人被称之为科学工作者或择其优者—科学家。</p> <p>随着时代发展,人们不断将不断从旧的工作生活中脱离出来,投奔至新的生活,逐渐地,所谓科学研究,社会的对其需求相应会不断增大。</p> <p>那么一系列的问题就随之而来,等待着我们解答: 科学研究的基本方法是什么呢?有怎样的规律? 科学研究与教育之间是怎样的关系呢? 科学知识的传递与新知识的发现和运用又是怎样的过程呢? 科学研究的方法是怎样演变的呢?要走向何处呢?</p> <p>这些问题是当然是难以回答的。但可以看到传统研究的学术交流在其中是十分重要的,在17世纪,首先出现了学术期刊,就是用来科学工作者之间进行交流的。尔后不断有各种科学交流的活动产生,学术活动、团体、组织。直到现代,通讯工具的发展,各个科学研究团体的会议、组织,作为标志性的如开放期刊,预印本等开放获取的期刊不断出现,包括开放源代码的计算机技术发展,等等,都在促进着科学研究更加广泛深入的交流。</p> <p><strong>开放研究的具体内容?</strong></p> <p>开放研究(Open Research)或者叫开放科学(Opne Science),是使得科学研究的方法和内容的全面传播成为可能的一种活动。</p> <p>通过这一活动,鼓励出版机构出版开放获取人人可得的研究文献(open access),鼓励科学工作者开放研究笔记(open notebook science)等等,并使得科学研究相关的资料获取成为每个人的可能。</p> <p>更加具体的内容,如果有空闲还要继续了解和思考,这个博客所写的所有东西都会不断更新,开放研究中最重要的部分也莫过于开放研究笔记。 破除只有科学工作者能够搞科学、只有科学工作者才会搞科学研究、只有科学工作者才配搞科学的片面认识。 其实道理我们都懂,就是“授之以渔而非授之以鱼”。那么真正做起来可能吗?真的可能吗? 那么何为科学本身呢?何为对科学的追求呢?如何实现呢是不是假大空的?难以回答</p> <p>但是我想,现在有了一条新的道路愿意面对这些类似的问题,就是开放研究。开放研究希望能在传统研究的基础上增加一个维度。 这就像是科学研究领域的极限运动,在“刀尖”上行走,一个不小心就出问题就会“摔死了”,如果把握的好,那么也许还能继续看到“明天中午za亮的太阳”。</p> <p>对于一个人来说,这是一个可以直达科学研究大门的机会,自己从不认为只有那些特别的人才能进行科学研究,不是那些只有会的或擅长的人才能进行科学研究,况且历史上又那么多的大科学家并不是为了所谓“成就”来进行这一活动的,在今天的社会,这是有办法有可能有条件来创造机会,使得科学研究变得易于接近的。</p> <p>现有科学研究的发展正在突飞猛进,我们可以相信,已经逐步有了科学研究的<a href="http://paperscape.org">基本地图</a>,那么如何在这张地图上行走,能否有一个导航?能否可以指一个大致的方向来帮助容易迷路的人们,使迷途不再忧伤。</p> <p>任何一个人当然都是无法进行这样的事情的,但是确实一直以来有许多人找到了这样的方向,他们在进行这开放科学的相关工作,这里也对他们致敬。</p> <p>本是无意,将要收笔之时,才突然发现今天是2018年考研,作为纪念我就把上面写的东西发出去。</p> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2017/12/23
阅读更多

文件修改忘记改了什么怎么办?使用git

<p><em>”—-你本来不该知道这些的,可是现在我们没有更好的工具,所以得这样弄一下……”</em></p> <p>这里主要就是解决一个问题: 在平时对纯文本进行编辑时,不论这文本是程序代码还是文字,任何人都容易在编辑时出错,那么如何看出一个文件我们改了什么?什么时候改的?这时就要用到git这个工具,来做一下简单的版本控制。</p> <div class="language-plaintext highlighter-coderay"><div class="CodeRay"> <div class="code"><pre><span class="line-numbers"> <a href="#n1" name="n1">1</a></span>``` <span class="line-numbers"> <a href="#n2" name="n2">2</a></span>$ man git <span class="line-numbers"> <a href="#n3" name="n3">3</a></span>``` <span class="line-numbers"> <a href="#n4" name="n4">4</a></span> <span class="line-numbers"> <a href="#n5" name="n5">5</a></span>当我们学习使用git时,查看命令最快的方法是用man命令,对每个命令都有人写好了标准的使用手册,还可以上网查阅相关资料,如[git官网](https://git-scm.com/),如[高能所计算环境使用手册](http://afsapply.ihep.ac.cn/cchelp/zh/),如[git Brief](https://devcharl.github.io/devcharl.github.io/2019/04/25/git_usage/),当然现在”STFW”是十分方便的,后面的内容这里不厌其烦地详细写了一下。 <span class="line-numbers"> <a href="#n6" name="n6">6</a></span> <span class="line-numbers"> <a href="#n7" name="n7">7</a></span>这里介绍git的基本用法,只学学最简单的,另外还有github,gitpage,gitbook和其对应的国产软件将在之后再写写看。这是程序员们使用的基本工具,Linus Torwalds发起的版本控制软件,计算机科学快速分发共享的github正是于此建立。如同学所说去中心化的计算机科学的发展催化了开源,微软在收购github之后也正式高调加入了开源软件运动,这才有了.Net和c#的开源,这才使得如今在中美贸易战的情况下,我们中国人依然可以开发像[SeeSharp](https://github.com/SeeSharpOpenSource/SeeSharpTools)这样优秀(笑)的想要设法替代[NI LabVIEW](http://www.ni.com/zh-cn.html)的[行业软件](http://www.jytek.com/home)。 <span class="line-numbers"> <a href="#n8" name="n8">8</a></span> <span class="line-numbers"> <a href="#n9" name="n9">9</a></span>git可以记录并显示文件的修改历史,还可以进行不同历史版本的比较,如果需要可以退回上次的修改。这里所讲都是deepin linux下的内容(简单!),win操作系统的请自行百度。 <span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="line-numbers"><a href="#n11" name="n11">11</a></span>(自己之前都没有写下来该怎么用,还经常忘记,今天又发生了代码误删的情况所以这回要把git学会了)(2017年11月的某一天) <span class="line-numbers"><a href="#n12" name="n12">12</a></span> <span class="line-numbers"><a href="#n13" name="n13">13</a></span>首先是检查git的版本: <span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="line-numbers"><a href="#n15" name="n15">15</a></span>``` <span class="line-numbers"><a href="#n16" name="n16">16</a></span>$git --version <span class="line-numbers"><a href="#n17" name="n17">17</a></span>git version 1.8.2.1 <span class="line-numbers"><a href="#n18" name="n18">18</a></span>``` <span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span>下一步是了解基本概念,什么是git(也可以跳过直接看使用): <span class="line-numbers"><a href="#n21" name="n21">21</a></span> <span class="line-numbers"><a href="#n22" name="n22">22</a></span>在Git中,每个版本库都叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录在该目录下所有内容(子目录递归包含)发生的所有更新。假如我们现在建立一个仓库,仓库所在的这个目录中会有一个”.git”的文件夹(ls -al查看)。.git这个文件夹非常重要,所有的版本信息、更新记录,以及Git进行仓库管理的相关信息全都保存在这个文件夹里面。所以,想要删除该目录的git仓库设置,就删除该文件夹即可。 <span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="line-numbers"><a href="#n24" name="n24">24</a></span>接下来就是使用,主要就是如下命令按顺序试试,基本就会了: <span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="line-numbers"><a href="#n26" name="n26">26</a></span>``` <span class="line-numbers"><a href="#n27" name="n27">27</a></span>$git init //在当前目录(工作目录)初始化仓库 <span class="line-numbers"><a href="#n28" name="n28">28</a></span>#已初始化空的 Git 仓库于 /home/cuixf/abc/.git/ <span class="line-numbers"><a href="#n29" name="n29">29</a></span>$git status //此时查看工作目录状态,如果有文件会显示 <span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span>#位于分支 master <span class="line-numbers"><a href="#n31" name="n31">31</a></span># <span class="line-numbers"><a href="#n32" name="n32">32</a></span>#初始提交 <span class="line-numbers"><a href="#n33" name="n33">33</a></span># <span class="line-numbers"><a href="#n34" name="n34">34</a></span>#未跟踪的文件: <span class="line-numbers"><a href="#n35" name="n35">35</a></span># (使用 &quot;git add &amp;lt;文件&amp;gt;...&quot; 以包含要提交的内容) <span class="line-numbers"><a href="#n36" name="n36">36</a></span># <span class="line-numbers"><a href="#n37" name="n37">37</a></span># a.txt <span class="line-numbers"><a href="#n38" name="n38">38</a></span># a/ <span class="line-numbers"><a href="#n39" name="n39">39</a></span># <span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span>#提交为空,但是存在尚未跟踪的文件(使用 &quot;git add&quot; 建立跟踪) <span class="line-numbers"><a href="#n41" name="n41">41</a></span>``` <span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="line-numbers"><a href="#n43" name="n43">43</a></span>``` <span class="line-numbers"><a href="#n44" name="n44">44</a></span>$git add . //注意有个&quot;.&quot;,表示把&quot;./&quot;目录下的所有文件添加到Git里,建立工作空间Workspace,这时如果再次查看,&quot;git status&quot;可以看到新增了文件 <span class="line-numbers"><a href="#n45" name="n45">45</a></span>$ git commit -m &quot;test1&quot; //这里提交工作目录的当前版本给Git,可以输入此次修改的注释信息如&quot;test1&quot;,可以看到所有文件提交成功: <span class="line-numbers"><a href="#n46" name="n46">46</a></span>#[master(根提交) 64f42d0] test1 <span class="line-numbers"><a href="#n47" name="n47">47</a></span># 3 files changed, 0 insertions(+), 0 deletions(-) <span class="line-numbers"><a href="#n48" name="n48">48</a></span># create mode 100644 a.txt <span class="line-numbers"><a href="#n49" name="n49">49</a></span># create mode 100644 a/b.txt <span class="line-numbers"><strong><a href="#n50" name="n50">50</a></strong></span># create mode 100644 a/c/c.txt <span class="line-numbers"><a href="#n51" name="n51">51</a></span>git status //再次查看,发现目前版本提交完毕 <span class="line-numbers"><a href="#n52" name="n52">52</a></span>#On branch master <span class="line-numbers"><a href="#n53" name="n53">53</a></span>#nothing to commit (working directory clean) <span class="line-numbers"><a href="#n54" name="n54">54</a></span>``` <span class="line-numbers"><a href="#n55" name="n55">55</a></span> <span class="line-numbers"><a href="#n56" name="n56">56</a></span>最主要的对文件修改历史进行比较,如果此时已经修改工作目录的文件,修改保存后,输入 <span class="line-numbers"><a href="#n57" name="n57">57</a></span> <span class="line-numbers"><a href="#n58" name="n58">58</a></span>``` <span class="line-numbers"><a href="#n59" name="n59">59</a></span>$ git status //发现已经出现修改 <span class="line-numbers"><strong><a href="#n60" name="n60">60</a></strong></span>$ git diff //即可显示修改了什么,会有++,--这样的符号也就是删减情况,另外还可以使用图形GUI界面(gitk命令)看,确认修改后先如上add然后commit即可保存当前版本 <span class="line-numbers"><a href="#n61" name="n61">61</a></span>``` <span class="line-numbers"><a href="#n62" name="n62">62</a></span> <span class="line-numbers"><a href="#n63" name="n63">63</a></span>另外如果联网后,想要下载/上传自己的仓库到远程服务器,可以看git的命令(clone,push,pull?),看看github的基本用法。 <span class="line-numbers"><a href="#n64" name="n64">64</a></span> <span class="line-numbers"><a href="#n65" name="n65">65</a></span>``` <span class="line-numbers"><a href="#n66" name="n66">66</a></span>$git clone/push/pull <span class="line-numbers"><a href="#n67" name="n67">67</a></span>``` </pre></div> </div> </div> <p>继续学习,可以学习分支branch(git merge/rebase),看看回滚(git reset/revert/checkout),看看远程管理(git remote/tag)等等。</p> <p>这些虽然说净是些程序员的东西,但是既然目前计算机科学做的很好,自由软件运动思想也很超前影响力很大,那么了解一下也是很好的。看纪录片<a href="https://www.bilibili.com/video/av9512574/">操作系统革命</a>,很有意思,影片中观点讲述了自由软件运动整体的发展过程,其基本观点是讲,电脑如果受限于win这样的商业的操作系统,购买的电脑就像是租的,受制于微软这家企业,所以自由软件运动让买了电脑的人可以真正拥有自己的电脑,最终使个人电脑提供的各种计算资源回到了个人的手中。现在的开放研究运动其实也在很大程度上受到自由软件运动的启发,要将科学研究的创新劳动过程带回到人的本质上来。</p> <p>当然物理学在开放研究方面一直做的都比较好,处在前沿位置<a href="https://scoap3.org/what-is-scoap3/">SCOAP</a>,发展劲头一直都在继续<a href="https://theconversation.com/how-the-insights-of-the-large-hadron-collider-are-being-made-open-to-everyone-70283">How the insights of the Large Hadron Collider are being made open to everyone</a>,未来的物理学发展可能超乎我们现在的想象。</p> <p>参考1:<a href="http://www.cnblogs.com/wilber2013/category/643754.html">Git Step by Step</a> 参考2:<a href="http://www.cnblogs.com/xiaoya901109/">IronMan</a></p> <div><table align="right"><td align="right" bgcolor="#FFFFFF" width="200"><font color="#F0F0F0">~~继续思考~~</font></td></table><br /><table align="right"><td align="right" bgcolor="#F5F5F5" width="300"><font color="#000000">-------开放研究之所以可能</font></td></table></div>

2017/11/21
阅读更多

开始篇

<p>本博客改编自https://liungkejin.github.io, 感谢<a href="https://github.com/liungkejin/liungkejin.github.io">梁窠金的个人博客</a>带我入门。</p> <p>小站源代码增加了一些说明,只需要修改名字和一些变量他人就可以重复使用,修改后存放于github,欢迎issues,继续修改中敬请期待~~</p> <p>小站使用<a href="http://jekyll.bootcss.com/">jekyll</a>还有<a href="http://v3.bootcss.com">bootstrap</a>搭建!个人页面应用了 <a href="http://ddbullfrog.github.io/resumecard/">resumecard</a>项目!</p> <p>同时和粱窠金一样也要感谢<a href="http://www.monkeysnatchbanana.com/">Monkey Snatch Banana</a> 博客,最初模板是人家的。其他模板将来可能会更新使用。</p> <p>gitpage类似的主要写东西比较简洁直接进行表述,可以参考如<a href="https://yifan92.github.io">HEP note</a>,如<a href="http://www.yinwang.org/">王垠博客</a>。借鉴的博文还有: <a href="http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html">阮一峰</a>,<a href="https://blog.csdn.net/garfielder007/article/details/49992713">garfielder007</a>,<a href="https://www.cnblogs.com/purediy/archive/2013/03/07/2948892.html">雨知</a>,也可以上<a href="https://www.v2ex.com">V站</a>看看。当然STFW亦可。</p> <p>小站现已更新,内容基本选用<a href="https://creativecommons.org/licenses/">CC-BY-SA</a>协议,这一协议保证了本博客内容的版权。 小站文档分为建档和更新档,建档与更新档不同,网站中直接看到的是更新时间(每篇文字独立更新!!!,找找<a href="https://xiaophy.com/menu.html">更新了什么?</a>),建档时间可在网页源码中查看,建档和修改历史需到github查看。</p> <p>小站现已加入<a href="https://github.com/timqian/chinese-independent-blogs">中文独立博客列表</a>,已更新支持RSS订阅和在线评论。电脑坏了一次丢失了大量的文件,不过还好,脑子并没有丢掉。</p> <p>本小站博客的标题看起来只是一些最基础的东西,简直是个笑话,但是开放研究不注重分享内容而是方法,所以其中的所写其实是类似的东西如何有方法学习和继续发展,这样就符合了小站建立的初衷。</p> <p>感谢 <a href="https://github.com">github</a> 提供的 Github Pages 功能!</p>

2017/9/10
阅读更多