标签: chemistry

解析化学式

我正在尝试为一个应用程序编写一个方法,它采用像"CH3COOH"这样的化学式,并返回一些充满符号的集合.

CH3COOH会返回[C,H,H,H,C,O,O,H]

我已经有了一些有点工作的东西,但它非常复杂并且使用了大量嵌套if-else结构和循环的代码.

有没有办法可以通过使用String.split的某种正则表达式或者其他一些简单的代码来实现这一点?

java chemistry

21
推荐指数
3
解决办法
8328
查看次数

蒙特卡罗模拟蛋白质结构和网格

我正在研究蛋白质结构的蒙特卡罗模拟脚本.我从来没有在蒙特卡洛脚本之前做过.我将大规模扩展这个计划.根据蛋白质xyz坐标我必须定义盒子大小.此框将被划分为大小为0.5 A的网格.根据距离和角度标准,我必须根据Boltzmann概率分布指定点.

3-D盒中的蛋白质结构,显示网格

我的程序应该通过取0.5 A的网格在每个方向上移动并生成随机点并检查距离和角度的条件.如果满足条件,则根据玻尔兹曼概率分布丢弃该点.

这是我生成随机点的代码

from __future__ import division    
import math as mean    
from numpy import *   
import numpy as np   
from string import *    
from random import *    

def euDist(cd1, cd2):# calculate distance
    d2 = ((cd1[0]-cd2[0])**2 + (cd1[1]-cd2[1])**2 + (cd1[2]-cd2[2])**2)
    d1 = d2 ** 0.5
    return round(d1, 2)

def euvector(c2,c1):# generate vector
    x_vec = (c2[0] - c1[0])
    y_vec = (c2[1] - c1[1])
    z_vec = (c2[2] - c1[2])
    return (x_vec, y_vec, z_vec)


 for arang in range(1000):  # generate random point …
Run Code Online (Sandbox Code Playgroud)

python simulation numpy montecarlo chemistry

12
推荐指数
1
解决办法
1563
查看次数

用C#中的字符串解析化学式?

我试图从字符串中解析C#中的化学式(格式,例如:Al2O3O3CC11H22O12).它工作正常,除非只有一个特定元素的原子(例如氧原子H2O).我该如何解决这个问题呢?此外,还有一种更好的解析化学式公式字符串的方法吗?

ChemicalElement是代表化学元素的类.它具有AtomicNumber(int),Name(字符串),Symbol(字符串)属性.ChemicalFormulaComponent是表示化学元素和原子计数的类(例如,公式的一部分).它具有Element(ChemicalElement),AtomCount(int)属性.

其余部分应该足够清楚(我希望),但如果我能澄清任何事情,请在回答之前告诉我.

这是我目前的代码:

    /// <summary>
    /// Parses a chemical formula from a string.
    /// </summary>
    /// <param name="chemicalFormula">The string to parse.</param>
    /// <exception cref="FormatException">The chemical formula was in an invalid format.</exception>
    public static Collection<ChemicalFormulaComponent> FormulaFromString(string chemicalFormula)
    {
        Collection<ChemicalFormulaComponent> formula = new Collection<ChemicalFormulaComponent>();

        string nameBuffer = string.Empty;
        int countBuffer = 0;

        for (int i = 0; i < chemicalFormula.Length; i++)
        {
            char c = chemicalFormula[i];

            if (!char.IsLetterOrDigit(c) || !char.IsUpper(chemicalFormula, 0)) …
Run Code Online (Sandbox Code Playgroud)

c# parsing chemistry

8
推荐指数
1
解决办法
3509
查看次数

最小的圆环

我有一个未加权的无向连通图.通常,它是一种具有大量循环的化合物.这个问题在这个领域很常见,就像标题所说的那样.好的算法是Horton的算法.但是,我似乎没有逐步找到有关该算法的任何确切信息.

显然我的问题是这个,用于在图中查找最小周期的算法,但不幸的是,禁用了该站点的链接.我只发现了Figueras算法的python代码,但Figuearas在每种情况下都不起作用.有时它找不到所有戒指.问题与此类似,在无向图中查找所有无弦循环,我尝试过但不适用于像我这样的更复杂的图形.我找到了4-5个所需信息的来源,但该算法根本没有完全解释.

我似乎没有找到任何SSSR算法,虽然它似乎是一个常见的问题,主要是在化学领域.

algorithm graph chemistry

7
推荐指数
1
解决办法
612
查看次数

如何在Python 2.7中使用矩阵平衡化学方程式

我有一个大学作业,必须平衡以下等式:

NaOH + H2S04-> Na2S04 + H2O

目前,我对python和编码的了解非常有限。到目前为止,我已经尝试使用矩阵来求解方程。看来我正在获取解决方案a = b = x = y = 0我想我需要将变量之一设置为1并求解其他三个变量。我不确定该怎么做,我进行了搜索,看起来其他人使用了更复杂的代码,但我真的没法遵循!

这是我到目前为止所拥有的

    #aNaOH + bH2S04 --> xNa2SO4 +y H20

    #Na: a=2x
    #O: a+4b=4x+y
    #H: a+2h = 2y
    #S: b = x

    #a+0b -2x+0y = 0
    #a+4b-4x-y=0
    #a+2b+0x-2y=0
    #0a +b-x+0y=0

    A=array([[1,0,-2,0],

             [1,4,-4,-1],

             [1,2,0,-2],

             [0,1,-1,0]])

    b=array([0,0,0,0])




    c =linalg.solve(A,b)

    print c

0.0.0.0
Run Code Online (Sandbox Code Playgroud)

python equation balance matrix chemistry

6
推荐指数
1
解决办法
2090
查看次数

从化学式中提取数字

如果已经提出并回答了这个问题,我很抱歉,但我找不到满意的答案.

我有一个化学公式列表,按顺序包括:C,H,N和O.我想在每个字母之后提取数字.问题是并非所有公式都包含N.但是,所有公式都包含C,H和O. 并且数字可以是单数,双数或(仅在H的情况下)三位数.

因此数据看起来像这样:

  • C20H37N1O5
  • C10H12O3
  • C20H19N3O4
  • C23H40O3
  • C9H13N1O3
  • C14H26O4
  • C58H100N2O9

我想在单独的列中列出列表的每个元素编号.所以在第一个例子中它将是:

20 37 1 5
Run Code Online (Sandbox Code Playgroud)

我一直在努力:

=IFERROR(MID(LEFT(A2,FIND("H",A2)-1),FIND("C",A2)+1,LEN(A2)),"") 
Run Code Online (Sandbox Code Playgroud)

分离出C#.然而,在此之后我被卡住了,因为H#侧面是O或N.

是否有excel公式或VBA可以做到这一点?

excel vba excel-vba excel-formula chemistry

6
推荐指数
1
解决办法
957
查看次数

如何组织 DataFrame 列

我试图根据特定规则组织 DataFrame 列,但我不知道方法。

\n

例如,我有一个与化学相关的 DataFrame,如下所示。\n每行显示化合物中化学键的数量。

\n
   OH  HO  CaO  OCa  OO  NaMg  MgNa\n0   2   3    2    0   1     1     1\n1   0   2    3    4   5     2     0\n2   1   2    3    0   0     0     0\n
Run Code Online (Sandbox Code Playgroud)\n

在化学中,OH(氧-氢)键等于HO(氢-氧)键,CaO(钙-氧)键等于OCa(氧-钙)键。因此,我想组织 DataFrame 如下所示。

\n
   OH  CaO  OO  NaMg \n0   5    2   1     2\n1   2    7   9     2\n2   3    3   0     0\n
Run Code Online (Sandbox Code Playgroud)\n

我\xe2\x80\x99m 挣扎是因为:

\n
    \n
  • 我的真实DataFrame中有多种化学键,所以不可能一一整理信息(列数超过3000,我不知道哪些化学键存在并且是重复的。)
  • \n
  • 字母数量取决于每个元素符号,有些符号包含小写\n(例如氢:H(一个字母且仅大写),钙:Ca(两个字母且大小写)
  • \n
\n

我在网上找了同样的问题,自己写了代码,但没找到方法。我想知道解决我的问题的代码。

\n

python chemistry pandas

6
推荐指数
1
解决办法
88
查看次数

有基础科学化学/物理编程的库吗?

我想知道是否有一个用于 C++(或者可能是 C)的化学和/或物理的开源科学库?

我不是在寻找模拟模型、可视化、3D 建模。

我只是在寻找一个基本的工具箱,例如:各种常数,如理想气体常数、阿伏加德罗常数、元素值周期表;分子量计算;也许是实现化学计量、气体定律、热动力学、动力学方程的基本函数。

化学/物理101种东西。

我在 SourceForge 上找到了:

  • SourceForge 上的 Christoph Steinbeck 的化学开发工具包 (Java)。
  • NIST-常量

physics chemistry

5
推荐指数
2
解决办法
1898
查看次数

用Gnuplot绘制红外光谱

我有一个感兴趣的化合物的红外光谱,我想绘制,我有一个包含所有数据点的spectrum.dat文件.它的形式如下:

    # X  Y     
    300  100
    301  100
    302   99
    303   70
    ...
    3999  98
    4000 100
Run Code Online (Sandbox Code Playgroud)

我想用一个典型的红外光谱的x轴来绘制这个图,但我很难这样做.如果您不熟悉,这就是典型的红外光谱可能看起来的样子(除了图表本身的标签).请注意,x轴是相反的,并且它突然将其缩放加倍到2000单位(倒数厘米)以上.有没有办法强迫Gnuplot以这种方式绘制我的数据?到目前为止,我已设法提出以下脚本:

    # Make an SVG of size 800x500
    set terminal svg size 800,500 fname 'CMU Sans Serif' fsize '10'
    set output 'ir.svg'
    # Color definitions
    set border linewidth 1.5
    set style line 1 lc rgb '#a0a0a0' lt 1 lw 2 pt 7 # gray
    # Format graph
    unset key
    set xlabel 'Wavenumbers'
    set ylabel 'Transmittance'
    set xrange [4000:300]
    # …
Run Code Online (Sandbox Code Playgroud)

plot gnuplot chemistry spectrum infrared

5
推荐指数
2
解决办法
2586
查看次数

R:化学计算微分方程中的时间相关参数(工作)

编辑:公式中有错误,现在一切都按预期进行。感谢让我审查代码的建议

我正在尝试研究一个非常著名的化学方程式 Šesták–Berggren,它代表了一个强大的工具,用于通过模型拟合方法描述动力学数据,取自 DOI:10.1016/j.tca.2011.03.030。没有可用于模拟它的免费/开放包,所以我试图将它添加到我自己的动态包 takos https://cran.r-project.org/web/packages/takos/index.html。由于它是逻辑函数的“变体”,我正在考虑使用 deSolve 包。唯一的问题是我有一个依赖于时间的参数。我认为它可以使用 approx fun 解决,但我被困在那里的代码 [现在工作]

 rm(list=ls())
library(deSolve)
A=10^6.3 #parameter needed by the function which is "fixed"
Ea=80000 #an example of activation energy
R=8.314  #gas constant
npoints=100 #just 1000 points to start
qqq=5  #ratio
T0=0   #starting temperature
T.end=1200 #end temperature
Ts=273.15+T0 #transformation in K
time.e=(T.end-T0)/(qqq/60) #estimated time for the analysis
time.s=seq(0.1,time.e, length.out=npoints) #vector with all the times
Temp=Ts+(time.s*(qqq/60)) #temperatures calculated at each time
tm=time.s
m=1 #parameter in the Sestak-Berggen Equation da/dt=A*exp(-Ea/RT)*a^m*(1-a)^n
n=2#secon parameter …
Run Code Online (Sandbox Code Playgroud)

r chemistry logistics differential-equations

5
推荐指数
0
解决办法
74
查看次数