void formulaFromSMILES( const char * smiles ) { std::ofstream of( "output.txt" ); of << "formulaFromSMILES(" << smiles << ")" << std::endl; if ( auto mol = std::unique_ptr< RDKit::ROMol >( RDKit::SmilesToMol( smiles, 0, false ) ) ) { mol->updatePropertyCache( false ); auto formula = RDKit::Descriptors::calcMolFormula( *mol, true, false ); of << "formula: " << formula << std::endl; WSPutString( stdlink, formula.c_str() ); } }
void getmatrix(int bw, double alpha, double beta, double kappa, double tau, fftw_complex * gamma, double dt, fftw_complex *matrix, fftw_complex *matrix1) { int l; init_and_openlink(); WSPutFunction( lp, "EnterTextPacket", 1L); WSPutString(lp,"Get[\"src/matrix.m\"]"); WSEndPacket(lp); for(l = 0; l<bw; l++) { WSPutFunction( lp, "EvaluatePacket", 1L);{ WSPutFunction( lp, "matrix", 7L);{ WSPutInteger( lp, l); WSPutReal64( lp, alpha); WSPutReal64( lp, beta); WSPutReal64( lp, kappa); WSPutReal64( lp, tau); WSPutReal64( lp, dt*gamma[0][0]); WSPutReal64( lp, dt*gamma[0][1]); }}WSEndPacket( lp); skip_packets(lp); double * data; int *dims; char **heads; int d; WSGetReal64Array(lp, &data,&dims,&heads,&d); memcpy(matrix+totalCoeffs_so3(l),data,sizeof(fftw_complex)*(2*l+1)*(2*l+1)); WSReleaseReal64Array(lp,data,dims,heads,d); } for(l = 0; l<bw; l++) { WSPutFunction( lp, "EvaluatePacket", 1L); WSPutFunction( lp, "matrix", 7L); WSPutInteger( lp, l); WSPutReal64( lp, alpha); WSPutReal64( lp, beta); WSPutReal64( lp, kappa); WSPutReal64( lp, tau); WSPutReal64( lp, dt*gamma[1][0]); WSPutReal64( lp, dt*gamma[1][1]); WSEndPacket( lp); skip_packets(lp); double * data; int *dims; char **heads; int d; WSGetReal64Array(lp, &data,&dims,&heads,&d); memcpy(matrix1+totalCoeffs_so3(l),data,sizeof(fftw_complex)*(2*l+1)*(2*l+1)); WSReleaseReal64Array(lp,data,dims,heads,d); } WSPutFunction( lp, "Exit", 0L); return; }
void standardFormula( const char * formula ) { auto result = adcontrols::ChemicalFormula::standardFormula( formula ); WSPutString( stdlink, result.c_str() ); }