问题标签 [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 回答
224 浏览

objective-c - 根据条件分离字符串

我正在为学校创建一个 iOS 项目,它适用于化学反应。

用户将有一个文本字段来插入如下等式:

Fe3O4 + CO = 3FeO + CO2

我的目标是根据某些条件将其分成几部分:

- 查找大写字母,然后测试下一个字符是否也是大写字母(例如:Fe)。- 查找每个元素的最后一个字符后是否有数字。- 找到 + 号表示不同的组件。

当然,我不是要代码,但我会很感激一些帮助。

提前致谢。

0 投票
4 回答
183 浏览

c# - 尝试更新字典类型中的值时防止双重哈希操作

我正在开发大量处理化学公式的科学研究软件。我使用内部来跟踪化学式的内容,Dictionary<Isotope, int>其中Isotope是“Carbon-13”,“Nitrogen-14”之类的对象,并且int表示化学式中这些同位素的数量。所以公式 C2H3NO 会像这样存在:

这一切都很好,但是当我想将两个化学式相加时,我最终不得不计算Isotope两次的哈希函数来更新一个值,请参见下面的代码示例。

虽然这看起来不会慢下来,但当我们将数十亿个化学式添加在一起时,这种方法始终是程序中最慢的部分(> 45% 的运行时间)。我正在处理像“H5921C3759N1023O1201S21”这样的大型化学式,这些化学式一直被较小的化学式添加。

我的问题是,有没有更好的数据结构来存储这样的数据?我尝试创建一个IsotopeCount包含 a 的简单对象,int这样我就可以访问引用类型(而不是值类型)中的值以避免双重哈希函数。然而,这似乎并没有什么好处。

EDIT Isotope是不可变的,在程序的生命周期内不应更改,因此我应该能够缓存哈希码。

我已链接到源代码,因此您可以更深入地查看这些类,而不是我在这里复制和粘贴它们。

0 投票
4 回答
692 浏览

regex - 查找小写化学式的所有可能排列

我正在尝试解决小写化学式中的歧义。由于某些元素名称是其他元素名称的子字符串,并且它们都一起运行,因此同一模式可以有多个全局匹配。

考虑/^((h)|(s)|(hg)|(ga)|(as))+$/针对字符串的正则表达式hgas。有两种可能的匹配。hg, ash, s, ga(与输入相比无序,但不是问题)。显然,所有可能符号的正则表达式会更长,但这个例子是为了简单起见。

正则表达式强大的前瞻和后瞻功能使其能够最终确定即使是很长的字符串是否与此模式匹配,或者是否有可能的字母排列。它将努力尝试所有可能的匹配排列,例如,如果它以 leftover 命中字符串的末尾,则g返回并重试不同的组合。

我正在寻找一个正则表达式,或者一种具有某种扩展名的语言,它增加了在找到匹配项后继续查找匹配项的能力,在这种情况下,查找h, s, ga以及hg, as.

为这个问题重建复杂的正则表达式的前瞻和后视功能似乎不是一个合理的解决方案,特别是考虑到最终的正则表达式还在每个符号后包含一个 \d*。

我想过颠倒正则表达式的顺序/^((as)|(ga)|(hg)|(s)|(h))+$/,以找到额外的映射,但最多只能找到一个额外的匹配项,而且我没有正则表达式的理论背景,不知道尝试是否合理。

我使用现有的正则表达式创建了一个示例页面,它为给定的小写字符串找到 1 个或 0 个匹配项,并将其正确大写(并且无序)返回。它在匹配中使用前 100 个化学符号。

http://www.ptable.com/Script/lowercase_formula.php?formula=hgas

tl; dr:我有一个正则表达式来匹配字符串中的 0 或 1 个可能的化学式排列。如何找到超过 1 个匹配项?

0 投票
1 回答
1906 浏览

javascript - 在圆上均匀分布点的算法(壳模型 - 化学)

我想创建一个插画脚本,将点放在一个圆圈周围。

假设给定了壳,但我需要一种方法来在 n 大小的圆圈上均匀分布一定数量的点(电子)。例如,第一个圆圈上有 2 个点,第二个圆圈上有 8 个,等等。

这是一个例子

重新表述我的问题:我最多有 7 个圈子都设置好了。我如何分散这些圆圈上的点?

0 投票
1 回答
237 浏览

actionscript-3 - Best thinkflow to make a Chemistry game in Flash?

So, as mentioned I'm doing some Flash this semester...I think I'd know how to do this in Python, with classes and all, but in AS3, everything is just so...detached.

I want to build a short chemistry game. You have 4 elements, fire, earth, wind and spirit, but the water is missing, the point is to make water. So you have on the stage, a fire_mc, a wind_mc, an earth_mc, a spirit_mc and the pot_mc. Clicking them adds a drop of them in the pot.

You have to put elements in there in a very specific order, but if you mess up, the count resets and you have to restart. The order is fire, spirit, earth, fire, spirit, wind. (very arbitrary at the moment, but let's say it's like that)

How would I make that in AS3?

(these tags are there to help people that want to build this specific kind of game)

This is my current code.

0 投票
2 回答
331 浏览

c# - 在编译代码或外部文件中嵌入大量常量

我正在开发需要访问元素周期表的科学软件。由一ElementIsotopes具有一些只读属性(例如质量、丰度、原子序数等)的集合组成。有超过 100 种元素,当考虑到它们的同位素时,有超过 1000 种同位素。为了在运行时填充所有这些对象,我目前有一个 XML 文件(构建操作:内容)*,其中包含我在Element类的静态构造函数期间解析的所有元素数据:

这行得通,但是在文件中解析会产生开销,并且我在设计Element类时失去了一些灵活性。Isotope另一种方法是将每个都硬编码Element到静态构造函数中。后者的优点是我可以为每个添加静态只读属性Element(一个有用的功能):

但是,这似乎是要包含在 class.cs 文件中的大量硬编码数据。所以我很伤心,一方面在数据管理级别上将元素数据存储在读入的外部文件中是有意义的。但另一方面,因为所有数据实际上都是一堆常量/静态只读对象,这个额外的解析工作似乎是及时的,没有成果的,并且限制了 API 设计。创建所有这些对象的正确方法是什么?

*注意:如果客户端出于任何原因想要修改元素的值,则构建操作设置为内容。这不是必需的,可以更改为嵌入式资源。

0 投票
3 回答
1766 浏览

python - 带有 .pdb 文件的 python

我正在从事生物项目。
我有.pdb(蛋白质数据库)文件,其中包含有关分子的信息。

我想找出.pdb文件中分子的以下内容:

  1. 分子质量。
  2. H键供体。
  3. H键受体。
  4. 日志P。
  5. 折射率。

python中是否有任何模块可以处理.pdb文件以找到这个?
如果没有,那么任何人都可以让我知道我该怎么做?

我发现了一些类似的模块sequtilsprotienparam但他们不做这样的事情。
我已经先研究然后发布,所以,请不要投反对票。
请评论,如果你仍然反对你为什么这样做。

提前致谢。

0 投票
1 回答
810 浏览

java - 电子配置逻辑

我正在尝试创建一个方法(在 java 中)来找出元素的电子配置。

前任。
He(第 2 元素:2 电子) 电子配置:1s 2
O(第 8 元素 8 电子) 电子配置:1s 2 2s 2 2p 4
Zr(第 40 元素 40 电子) 电子配置:1s 2 2s 2 2p 6 3s 2 3p 6 4s 2 3d 10 4p 6 5s 2 4d 2

我怎样才能弄清楚计算这个的逻辑?何时增加 s、p、d 和 f 壳,以及计算每个壳的上标。

S 最大 2 个电子(上标最大 2)
P 最大 6 个电子(上标最大 6)
D 最大 10 个电子(上标最大 10)
F 最大 14 个电子(上标最大 14)

也许是递归?

0 投票
2 回答
9007 浏览

python - 读取 SDF(化学)文件的 Python 程序

我想读取sdf文件(包含许多分子)并返回分子的加权邻接矩阵。原子应被视为顶点,而键应被视为边。如果ij顶点通过单键、双键或三键连接,则邻接矩阵中的对应条目应分别为 1、2 和 3。我需要进一步获取每个顶点的距离向量,其中列出了不同距离的顶点数。

有没有可用的python包来做到这一点?

0 投票
1 回答
117 浏览

algorithm - 什么是遍历 200 多个化学反应库的有效搜索机制

我目前正在开发一种有机转化模拟器,当提供起始化合物和结束化合物时,该模拟器将有助于生成中间的转化步骤。我正在寻找一种搜索机制来获得中间化合物。我遇到过蛮力作为搜索的解决方案。但由于我的库中有大约 200 个反应来检查每种化合物,我认为这会导致大量时间消耗。还有哪些其他技术或算法可以更有效地完成我的要求。例如我有模糊逻辑、遗传算法等