Python

所有帖子标记为python

更新(2018 Jun 6) – I’m试图学习如何使用 狮身人面像 从源代码DocStrings创建文档。 Sphinx手册令人印象深刻的不透明。一些谷歌曲出现了 这个文件,这似乎提供了有用的细节。

更新(2018年6月4日)– I’找到了一些更新的新资源:

要设置我的包,所以它可以通过pip安装,我’在这里稍微过时的教程– //python-packaging.readthedocs.io/en/latest/index.html.

I’LL培养更多的注释并按照我的方式更新这篇文章。

作为我的系列中的第二个条目,了解如何 写科学软件, 一世’m将描述选择和配置我的集成开发环境或 ide.。这是我的程序’LL用于编写和编辑我的项目的源代码。它’s更加有意义的幻想文本编辑器。

我选择的文本编辑器是 vim.. or vi improved. It’S高度可定制,强大,和那里’s lots of 网上帮助 用它。但是,它有一个非常陡峭的学习曲线和命令,速度键入,可以是非常密码的。事实上,Vim是 着名的难以退出.

在任何情况下,我开始使用vim 回来时“加勒比海盗”电影仍然很好那我’不,我没有vim guru,至少觉得至少留下了这个程序。

开放A. Mac中的终端窗口,我只是通过打字来开火“vim” or “vi”。开启编辑器窗口。 vim.. can automagically interpret and color source code, 如下:

来自Vim的屏幕截图显示语法源代码。

要打开语法着色,请转到主目录(类型“cd”在终端窗口中,通过键入编辑VIM配置文件.vimrc“vi .vimrc”。应该打开编辑器窗口。

然后,在Vim中,键入字母“i” (that starts “insert” or edit mode,允许您在文件中输入文本)和类型“syntax on” <ENTER> “filetype indent插件上”,给出一个如下所示的文件:

按转义键(退出插入模式并进入命令模式)。通过键入保存更改“:wq”。应该保存和退出。

与许多其他语言不同, Python考虑了其解释的空格,而且 Python样式指南 建议使用 每个缩进级别的四个空间。对于在Vim中的间距,具有标签键实现将很好。 ynfortony,我的vim默认情况下,为每个按下标签键插入八个空格。

但是您可以通过添加修改该行为 文件类型插件 文件到特殊的Vim配置文件夹。我按照说明 这里 在.vim目录中创建一个ftplugin目录(通过键入“cd && cd .vim && mkdir ftplugin && cd ftplugin”在终端窗口中)。然后,在目录内,我创建了python.vim(“vi python.vim”) and again pressed “i”进入插入模式。

我将以下行键入文件:

然后按转义键并键入“:wq”.

接下来,我通过键入测试新配置“vi test.py” (the “.py”很重要,因为那’vim知道您正在编辑Python文件并希望使用新的Python配置)。我按下标签,有四个空格而不是八个空间。

I’M确定还有其他配置设置是有用的,但是这个’ll do for now.

更新–2018年5月17日:我找到了这个优秀的网站– http://docs.python-guide.org/en/latest/,哪个地址 vim.. set-up以及许多其他问题。

古代软件开发人员在纸卡上精心打孔 写计划.

在我的毕业生事业之前,科学家很少,如果有史以来,如果有人公开分发他们的代码,就是为了掌握他们的编码项目。

但正如我完成博士的那样,科学家们正常见,使他们开发的代码是在互联网上随时可用的发布项目的一部分。但是,在线代码后的方法(至少 那些我知道的人)非常笨重。

如今,在线发布和共享代码的基础设施是强大的,成熟的,并且使用相对容易。因此,科学家正在创造 美好的代码存储库以及可访问的文档。

开放式代码变得越来越重要:因为代码变得更加复杂并且有能力,易于提供良好文档的代码对于支持至关重要 再现性是科学过程的基石。此外,联邦资助机构是 开始要求 调查人员将公开的代码和数据产品进行公开。

不幸的是,由于我是在这些存储库很常见之前的最后一代毕业生之一,我从未真正学习如何正确分发和文档代码。

因此,作为改善我的科学产出的持续努力的一部分(以及作为我未来的学生的助手),我’M将开始一系列半常规博客文章,描述了我学习如何编写,文档和科学代码的过程。

几个警告前期:

  • 我打算大多数(可能是专门)在Python中写下代码,它已经成为(至少在天文学)的语言中的语言,所以并非所有我写的都会是普遍相关的。
  • 我被迎来了 崇拜Mac. 很多年前,所以我写的不是所有的东西都与其他操作系统相关’s。虽然,我’缺点发现大多数天文学家使用Mac。
  • 这个博客系列绝不是全面或严谨的。一世’M只是计划描述我在我走的时候学习的内容,以及我什么时候能够奉献的时间几乎完全不够解释与项目相交的所有细节,细微差别或技术方面。

至于我打算写的实际科学代码,几年前我的同事和我写道 一篇论文 关于 椭圆形变异 巨大的外产上的肿瘤诱导非常接近他们的宿主恒星。附上的代码, 邪恶的 是写的 idl.,旧语言仍然广泛用于天文学,但需要购买昂贵的网站许可证。

我的计划是将该IDL代码转换为未来几周的Python包。

邪恶的–低质量伴侣诱导的椭圆型变化


由行星(白色/黑盘)绕过星形(橙黄盘)的潮汐扭曲(夸张)。下面的曲线显示了由于潮汐失真导致的恒星的亮度变化。

I’m prepping for 我的古典技工课程,计划开始下周。我们讨论的第一件事之一是统一的圆周运动以及它看起来如何沿X和Y轴投射,因此我认为有一个动画表明这一点是有用的。我在网上找到了一些动画,但没有真正展示了我正在寻找的x和y预测。

所以我决定使用我的进入首选的语言创建自己 Python。幸运的是,Python Guru 杰克维安普拉斯 已经创造了 一个非常好的动画模块 可用的 iPython笔记本.

基于他的例子 这里,我汇总了以下代码以生成所需的动画:

From http://en.wikipedia.org/wiki/Reese%27s_Pieces#/media/File:Reeses-pieces-loose.JPG.

From http://en.wikipedia.org/wiki/Reese%27s_Pieces#/media/File:Reeses-pieces-loose.JPG.

我吃 里斯’s pieces 午餐后几乎每天,他们都有三种颜色:橙色,黄色和棕色。

I’曾想知道三种颜色是否以平等的比例发生,所以今天午餐,我以为我’d尝试使用发生的速率 贝父’ Theorem.

贝父’考虑到一些新信息,定理提供了更新您对某些事件概率的估计的定量方法。在数学中,定理看起来像

$latex P\left( H | E \right) = \dfrac{ P\left( E | H \right) P\left( H \right)}{P\left( E \right)},$

达到乳胶H $的概率,鉴于满足某些条件$乳胶E $的概率,鉴于$乳胶H $发生,达到乳胶H $的概率,$乳胶H $的概率完全发生,并除以乳胶E $的概率。

$乳胶p(h)$和$乳胶p(e)$称为“priors”并且通常代表您的初始估计,即美元乳晕H $和$乳胶E $。 $乳胶p \ left(e | h \右)$被称为“likelihood”,$乳胶p(h | e)$是“posterior”,我们知道$乳胶e $满意的事情。 $乳胶p(h | e)$通常是我们的东西’重新计算计算。

大包

谢谢,Winco买入散装!

所以对于我的情况,$乳胶p(h)$将是某种颜色发生的频率,而$乳胶E $将是我的实验数据。

对于给定的频率$乳胶f _ {\ rm橙色} $的oranges(或棕色或黄色),概率$乳胶p(f _ {\ rm橙色} | e)$,我绘制$ latex n _ {\ rm oround} $橘子是〜f ^ n(1–f)^ n(不是橙色)。当我选择越来越多的糖果时,我可以继续重新评估$乳胶p $的f(0到1)的整个允许的范围,并找到最大化$乳胶p $的值。

关闭我的眼睛,我将十个不同的糖果从袋子中拉出来,下面的结果按顺序:棕色,橙色,橙色,黄色,橙色,橙色,棕色,橙色,黄色,橙色。这些结果显然暗示橙色的频率高于黄色或棕色。

这个ipython笔记本 实现所描述的计算,下面的曲线显示在一定数量的试验后的乳胶P $更改$乳胶n _ {\ rm试验} $:

应用贝叶斯推论来确定瑞茜的频率's pieces colors.

应用贝叶斯推论来确定瑞茜的频率’s pieces colors.

因此,例如,在我做任何试验之前$乳胶n _ {\ rm试验} = 0 $,我假设所有颜色都同样有可能。在第一次试验后,当我选择棕色糖果时,棕色的频率高于其他颜色的概率上升。经过三次试验(棕色,橙色,橙色),橙色拿走了铅,自从我达到了’看过任何yellows,那里’是黄色的非零概率’S频率实际上为零。我们可以了解概率在十次试验后如何安定下来。

基于这一现实简单的实验,似乎橙子的频率约为黄色和棕色的两倍。虽然没有那么有趣,如果我’d bothered to check 维基百科,我会看到那个“目标颜色分布为50%橙色,25%棕色和25%黄色” —完全符合我的估计。

初步调查显示了一个同事的项目,我正在考虑可能是’值得做。但对于该调查,我花了几个小时来制造一个相当复杂的情节 Pylab..,所以我以为我 ’D分享我是怎么做到的。

首先,这里’s the plot:

多行星系统成员的潮汐衰减时间尺度。

多行星系统成员的潮汐衰减时间尺度。

该地块显示了时间尺度 潮汐腐烂 多行星系统的成员。不幸的是,X轴标签aren’除非您放大,否则可以清晰,但如果您这样做,您可以看到字体颜色与相应的线条颜色匹配。

以下是我用于生成绘图的IPython笔记本。具有数据的Excel电子表格是 这里.

#Show the plot inline
%matplotlib inline

#load in the required modules
import pandas as pd
import Pylab.. as pl
import itertools as it
import numpy as np

# using the ExcelFile class
xls = pd.ExcelFile('exoplanet-archive_2015Mar25.xlsx')
data = xls.parse('obj of interest', index_col=1)
data = data[pd.notnull(data['a/(da/dt)Qs=1e6 (Gyrs)'])]

#Make a nice, big figure
fig = pl.figure(figsize=(15,15))
ax = fig.add_subplot(1, 1, 1)

#Make a list, indexing the dataframe labels
indices = range(len(set(data.index)))

#Make a list with the indices as the entries
labels = list(set(data.index))
#For concision, drop "Kepler" wherever it's found
labels = [w.replace('Kepler-', '') for w in labels]

#Make a cycle of line and text colors, blue, green, red, etc.
colors = it.cycle(['b', 'g', 'r', 'c', 'm', 'y', 'k'])

#Since each member of the multi-system should be plotted with the same x-value,
#  I need to generate a new list of all the same value with as many entries
#  as members. That's what "i" is for.
i = 0
for unq in set(data.index):

    #Retrieve the decay timescales calculated in the spreadsheet
    taus = data.loc[unq, 'a/(da/dt)Qs=1e6 (Gyrs)']

    #Generate the list of all the same x-value
    idx = np.上es_like(taus)*i

    #Make the scatter plot points with the current color
    ax.semilogy(idx, taus, marker='o', color=cur_color)

    
    #Get the next line color
    cur_color = next(colors)
    
    #Next x-value
    i += 1
    
#Give a little space to the left and right of the first and last x-values
pl.xlim([-1, len(set(data.index))+1])

#Switch out the x-values with the system names
pl.xticks(indices, labels, rotation='vertical', size='small', ha='center')

#Increase the size of the y-axis label font
pl.yticks(size=36)
#Label the y-axis
pl.ylabel('$a/\\left(\\frac{da}{dt}\\right)_{Q_{\\rm s} = 10^6}$ (Gyrs)', fontsize=36)

#Reset the colors cycle
colors = it.cycle(['b', 'g', 'r', 'c', 'm', 'y', 'k'])

#Set a new color for each x-axis label
for tick in ax.xaxis.get_ticklabels():
    tick.set_color(cur_color)
    cur_color = next(colors)

pl.savefig('Comparing multi-planet system a_dadt.png', bbox_inches='tight', orientation='landscape', dpi=250)

 

 

Artist's conception of Pluto's and Charon's surfaces. From http://www.ourpluto.org/home.

Artist’s conception of Pluto’s and Charon’s surfaces. From http://www.ourpluto.org/home.

我们星期五略微谈论几件事’club。首先,我们讨论过 astrobites.org.是一个覆盖天文学研究的有趣核心研究的伟大博客。我指出了这一点 他们要求从本科研究人员提交.

其次,我们讨论了 新的视野使命 ’S请求冥王星和卫星表面上的特征名称的建议。在该制度飞行后,将有大量的高分辨率图像,可能显示出各种复杂的表面形态。所有这些东西都需要名字。

第三,雅各布呈现 最近的一篇论文 这延长了这一点 Titius-Bode关系 到脱墨系统并预测有大约2个行星 居所 我们的星系中的每明星。潜在迷人的结果,但不幸的是,T-B的关系可能只是我们太阳系的一个有趣的巧合— 它没有理论基础那么那么’没有理由相信它可以推广到其他行星系统。尽管如此,上周这篇文章有很多新闻。

最后,我们谈到了在天文学中编码,我想发布我刚刚听到的资源, //python4astronomers.github.io/。看起来有很多有用的教程与天文学相关。

星期五’S Senderees包括Jennifer Briggs,Trent Garrett,Nathan Grigsby,Tanier Jaramillo,Emily Jensen,Liz Kandziolka和Jacob Sabin。