问题标签 [chemistry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2537 浏览

python - 如何制作python有机化学逆合成发生器?

我正在尝试通过制作一个简单的程序来学习python,该程序会生成一个典型的练习题,有机化学学生通常在考试中面临:逆合成题。

对于那些不熟悉这类问题的人:给学生一系列化学反应的初始和最终物种,然后要求学生确定对初始反应物进行了哪些试剂/反应以获得最终产物。

有时您只得到最终产品,并要求您列出合成某些参数所需的反应(仅从具有 5 个或更少碳的化合物开始,仅使用酒精等)

到目前为止,我已经做了一些研究,我认为 RDkit w/Python 是一个很好的起点。我的计划是使用 SMILE 格式来读取分子(因为我可以像处理字符串一样操作它),然后为每个反应定义函数,最后我需要一个化学物种数据库,程序可以从中随机选择物种(对于问题中的初始和最终物种)。然后程序从数据库中选择一个随机物种,对其应用一堆反应(3-5,由用户指定),然后显示最终产品。然后用户自己解决问题,然后程序显示它所采用的路径(使用中间体的图像并打印用于获取它们的试剂)。简单的。原则上。

但是一旦我开始实际编写函数时遇到了一些问题,首先为每个反应编写一个函数是非常乏味的,其次,SMILE 可以处理几乎所有的分子并发症(立体化学、几何学、等)它对某些分子有多种形式,我很难保持反应的特异性。第三,我使用“替换”方法来操作 SMILE 字符串,当我有想要通用的区域特异性反应时,这会给我带来麻烦

例如:Sn2 反应与伯烷基卤化物反应良好,但并非全部与叔烷基卤化物(空间位阻)反应,我将如何为该反应创建函数?

另一个问题,我希望反应被它们各自的试剂标记,因此我已经开始用所用试剂来命名功能。但是,当存在可以采取多种不同形式的试剂(例如格林加德试剂)时,这会成为问题。

我觉得有一种更好、更少重复和乏味的方法来解决这个问题。寻找正确方向的推动力

0 投票
0 回答
929 浏览

python - Scipy 曲线同时拟合多个图

我对 Scipy 非常陌生,并且已经给我留下了深刻的印象。我希望使用 ODEint 和曲线拟合来进行一些简单的化学动力学建模。基本上我正在整合一个方程以获得 y 值,然后将其拟合到我从 excel 中读取的一些数据中。对于下面的简单过程,它完美无缺

这有效:

问题

我想通过曲线同时拟合多个图来增加更多复杂性(见下文)。这是 A 转换为 B 转换为 C 的反应。我正在寻找曲线拟合并提取值 k1 和 k2。我有 Ca 和 Cb 的 ydata。要集成的功能运行良好(mytest - 见下文)。但是我不确定如何导入要拟合的 ydata。如果我像这样导入一个 ydata 数组:SM_f, SMc = curve_fit(SM, data['Time'], ydata (array of the Ca and Cb), p0 = (1, 1). 它给了我一个错误:操作数不能与形状一起广播 (10,3) (3,10)"

下面更新-我已经使用您建议的转换更新了我的代码(见下文)我觉得我错过了一些非常简单的东西。有任何想法吗?这是曲线拟合的限制吗?我应该使用别的东西吗?

错误信息

0 投票
1 回答
314 浏览

jquery - 转换达文波特图

我是一家医院教育部门的实习生,我的任务是将 davenport 图变成一个有效的交互式工具,以便教师可以在他们的演示中使用它。


我没有这个级别的化学或方程求解的背景/知识。


有问题的达文波特图:http: //imgur.com/Lo87Aib(没有足够的声誉来发布图片)

我已经用了几天了,并取得了很大的进步,我使用 Flot.js 和 jQuery 来实现几乎相同的克隆,具有拖放数据点的能力,而且使用用户输入并更改要点。

从昨天开始,我遇到了一个障碍,我在谷歌上搜索了很多,并访问了许多基于化学的网站,只是为了了解这个图表使用的公式。该图使用 Henderson-Hasselbalch 方程(链接 1)。

现在我的第一个问题是,我可以使用基于简单坐标的系统绘制数据点,即 x = 7.20,y = 8,因此患者患有代谢性酸中毒。但是,我什至不知道如何开始构建一个还包含 PCO2 值(红线)的公式。

我的第二个问题是,只有在第一个问题得到解决的情况下才有可能,我如何将该公式转换为 Flot.js 使用的坐标系?

即使只是轻轻地朝正确的方向轻推我也会对我有很大帮助


编辑1:(工作解决方案)

我设法使用 Mark 提供的示例构建了一个工作工具。由于我只需要绘制一个点,因此我将公式从它们各自的 for 循环中取出。

0 投票
0 回答
135 浏览

converter - 将标准 InChI 转换为具有固定氢层的 InChI

晚上好,

我正在尝试将标准 InChI 字符串转换为具有固定氢层的非标准 InChI 字符串:

示例:
尿嘧啶的标准 inChI : 预期
InChI=1S/C4H4N2O2/c7-3-1-2-5-4(8)6-3/h1-2H,(H2,5,6,7,8)
结果:
InChI=1/C4H4N2O2/c7-3-1-2-5-4(8)6-3/h1-2H,(H2,5,6,7,8)/f/h5-6H

尿嘧啶的 InChIkey:ISAKRJDGNUQOIC-UHFFFAOYSA-N

我的问题是,如果没有进一步的信息,这在理论上是否可行,如果没有,是否有其他方法可以实现这一目标,例如使用现有数据库?

最终目标是将带有氢层的 InChI 字符串转换为 mol 文件,以便能够根据它映射色谱峰,所以我安装了 OpenBabel,它可以做到这一点,但它无法解决上述 InChI 之间的转换。

我已经找到了仙人掌网站,该网站允许通过将 InChIkey 插入到 URL 中,将 InChI密钥(我可以从我拥有的标准 InChI 生成)转换为所需的非标准 InChI(带氢层),如下所示: http: //cactus.nci.nih.gov/chemical/structure/ISAKRJDGNUQOIC-UHFFFAOYSA-N/inchi。这里的问题是它返回了多个正确的非标准 InChI 字符串(具有固定的氢层)。其中一个是我所追求的尿嘧啶标准,但我没有找到一种方法来弄清楚如何自动选择正确的标准。您可以想象,我想以自动化方式运行它以进行数百次转换。

我感谢您的帮助。

洛迪

0 投票
0 回答
106 浏览

graph - 循环和复杂循环。如何在图表中找到它们?

我实际上有一个 cif 格式的分子。我不认为格式真的很重要,但提供给有兴趣的人。这个文件里面有很多数据。最重要的是(因为文件的这一部分实际上将分子描述为图形)是这一部分:

这不是整个文件,它只是一个示例。该分子可能包含许多环状结构。我可以通过第 6 列中的 Y 标志来定义芳香的。但也有其他的周期,可以是安静的不同:示例1或像那样示例2或那样:示例3。甚至这样的:例子4

我需要以这样一种方式提取所有循环,如果两个循环共享键,就像在第一个示例中一样,它们被视为一个循环。Tarjan 的算法在这里不起作用,因为它只运行每个节点一次。那么我该怎么做呢?请提供尽可能详细的信息。我对诸如 OpenBabel 之类的库不是很感兴趣,因为我打算用 Swift 编写东西并使用 cif 文件中的图形描述。

0 投票
1 回答
512 浏览

r - 如何使用带有 ggplot 的元素周期表显示计数?

我有一个元素成分列表,我想显示元素包含在映射到元素周期表上的成分中的次数(例如 ,CH4将计数增加一)。HC

我该怎么做ggplot?有我可以使用的地图吗?

0 投票
1 回答
472 浏览

python - 分析化学方程式,在 Python 中将括号外的子索引相乘

所以我对Python有点陌生。现在我正在制作一个化学方程式平衡器,但我被卡住了,因为我现在想做的是,如果你在括号中收到一个化合物,外面有一个子索引(像这样: (NaCl) 2),我想要将其扩展为这种形式: Na 2 Cl 2(也去掉括号)。现在我已经设法用这段代码去掉括号:

但是如何跟踪字符串并将括号中的索引相乘呢?

我知道如何迭代一个字符串,但我想不出如何专门乘以子索引。

谢谢您的帮助。

0 投票
2 回答
110 浏览

gfortran - FORTRAN 计数器循环返回相同值的多次迭代

首先,我是 FORTRAN 的新手。话虽如此,我正在尝试“构建”一个盒子,然后为 100 个原子随机生成 x、y、z 坐标。从那里开始,目标是计算每个原子之间的距离,这成为 Lennard-Jones 势能方程的值“r”。然后计算LJ势,最后求和整个盒子的势。我之前问过这个项目的一个问题是here。问题是我一遍又一遍地得到相同的计算值。我的代码如下。

0 投票
1 回答
1003 浏览

python - 在 PyMOL 中,如何使“resi”选择与变量一起使用?

如果我想选择蛋白质上的一个残基(比如说第十个残基),在编写 PyMOL 脚本时,我可以使用以下代码将其分配给变量“pep”

但是,如果我尝试使用预定义变量代替选择中的数字,则不会将任何原子分配给选择。

没有返回错误,也没有原子分配给选择。我尝试将变量类型转换为字符串和整数,但都没有工作。如果我在其他地方使用该变量a,例如打印语句或添加,它工作得非常好。有谁知道如何使resi选择与变量一起工作?我正在尝试根据我们收集的一些数据使用它对氨基酸进行不同的着色,并且我不想在每次分析一组新数据时对残基进行硬编码。

0 投票
2 回答
1596 浏览

r - Superscript/subscript in multiple text labels (table) in R

#xA;

This seems very simple: I have a (histogram) plot and use the text function to label the points.

In the data table, I have rows containing the x, y and label names (columnL, each point has a different name). The table is imported via read.table from a .csv file.

Everything works fine, BUT: I want to use subscript and superscript in the labels, and all solutions I found were for axis labels - here, I have a range of different labels, all of which need to be formatted correctly, so I was not successful when trying paste() and expression() in the text(labels=) (returned the same label for all points)... So, more generally: is it possible to have formatting options in these labels?

I am completely new to R (and programming), sorry if this is unclear or seems stupid. There is probably a way to "batch handle" the content of ColumnL somehow. I could add the formatting ([] and ^) to the .csv file ahead of time (but because it is not read as expression the output has no formatting).

UPDATED Edit: This almost works:

#xA;

where Example.txt contains:

#xA;

What's good about this is that the subscript works for the numbers (and I don't mind having the formatting defined in the input file). However, the one thing that I can't fix is that the "+", regardless of quotes, triggers a concatenation of rows 1 and 2 when ColL is run through parse(). How can I properly use + here? It is supposed to be superscript...

Edit: Note that the problem only occurs when "+" is the last (non-space) character of the entry (or when followed by [), otherwise it works fine (apparently "+" is only supposed to be in equations and there you wouldn't expect it at the end, but that's where I need it)