我正在尝试为一个应用程序编写一个方法,它采用像"CH3COOH"这样的化学式,并返回一些充满符号的集合.
CH3COOH会返回[C,H,H,H,C,O,O,H]
我已经有了一些有点工作的东西,但它非常复杂并且使用了大量嵌套if-else结构和循环的代码.
有没有办法可以通过使用String.split的某种正则表达式或者其他一些简单的代码来实现这一点?
我正在研究蛋白质结构的蒙特卡罗模拟脚本.我从来没有在蒙特卡洛脚本之前做过.我将大规模扩展这个计划.根据蛋白质xyz坐标我必须定义盒子大小.此框将被划分为大小为0.5 A的网格.根据距离和角度标准,我必须根据Boltzmann概率分布指定点.
我的程序应该通过取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) 我试图从字符串中解析C#中的化学式(格式,例如:Al2O3或O3或C或C11H22O12).它工作正常,除非只有一个特定元素的原子(例如氧原子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) 我有一个未加权的无向连通图.通常,它是一种具有大量循环的化合物.这个问题在这个领域很常见,就像标题所说的那样.好的算法是Horton的算法.但是,我似乎没有逐步找到有关该算法的任何确切信息.
显然我的问题是这个,用于在图中查找最小周期的算法,但不幸的是,禁用了该站点的链接.我只发现了Figueras算法的python代码,但Figuearas在每种情况下都不起作用.有时它找不到所有戒指.问题与此类似,在无向图中查找所有无弦循环,我尝试过但不适用于像我这样的更复杂的图形.我找到了4-5个所需信息的来源,但该算法根本没有完全解释.
我似乎没有找到任何SSSR算法,虽然它似乎是一个常见的问题,主要是在化学领域.
我有一个大学作业,必须平衡以下等式:
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) 如果已经提出并回答了这个问题,我很抱歉,但我找不到满意的答案.
我有一个化学公式列表,按顺序包括:C,H,N和O.我想在每个字母之后提取数字.问题是并非所有公式都包含N.但是,所有公式都包含C,H和O. 并且数字可以是单数,双数或(仅在H的情况下)三位数.
因此数据看起来像这样:
我想在单独的列中列出列表的每个元素编号.所以在第一个例子中它将是:
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可以做到这一点?
我试图根据特定规则组织 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\nRun 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\nRun Code Online (Sandbox Code Playgroud)\n我\xe2\x80\x99m 挣扎是因为:
\n我在网上找了同样的问题,自己写了代码,但没找到方法。我想知道解决我的问题的代码。
\n我想知道是否有一个用于 C++(或者可能是 C)的化学和/或物理的开源科学库?
我不是在寻找模拟模型、可视化、3D 建模。
我只是在寻找一个基本的工具箱,例如:各种常数,如理想气体常数、阿伏加德罗常数、元素值周期表;分子量计算;也许是实现化学计量、气体定律、热动力学、动力学方程的基本函数。
化学/物理101种东西。
我在 SourceForge 上找到了:
我有一个感兴趣的化合物的红外光谱,我想绘制,我有一个包含所有数据点的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) 编辑:公式中有错误,现在一切都按预期进行。感谢让我审查代码的建议
我正在尝试研究一个非常著名的化学方程式 Š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)