Hi Edward. So that helped, but just showed another problem: --------------------------------------------- C:\Python27\github\relax_disp>scons scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... link /nologo /dll /out:target_functions\relax_fit.pyd /implib:target_functions\r elax_fit.lib /LIBPATH:C:\Python27\libs target_functions\c_chi2.obj target_functi ons\exponential.obj target_functions\relax_fit.obj Creating library target_functions\relax_fit.lib and object target_functions\r elax_fit.exp relax_fit.obj : error LNK2019: unresolved external symbol __imp__PyFloat_FromDou ble referenced in function _func relax_fit.obj : error LNK2019: unresolved external symbol __imp__PyFloat_AsDoubl e referenced in function _setup relax_fit.obj : error LNK2019: unresolved external symbol __imp__PyList_New refe renced in function _back_calc_I relax_fit.obj : error LNK2019: unresolved external symbol __imp__PyList_SetItem referenced in function _back_calc_I relax_fit.obj : error LNK2019: unresolved external symbol __imp__PyArg_ParseTupl e referenced in function _func relax_fit.obj : error LNK2019: unresolved external symbol __imp__PyArg_ParseTupl eAndKeywords referenced in function _setup relax_fit.obj : error LNK2019: unresolved external symbol __imp__Py_InitModule4 referenced in function _initrelax_fit relax_fit.obj : error LNK2019: unresolved external symbol __imp__PySequence_GetI tem referenced in function _setup relax_fit.obj : error LNK2019: unresolved external symbol __imp___Py_NoneStruct referenced in function _setup target_functions\relax_fit.pyd : fatal error LNK1120: 9 unresolved externals scons: *** [target_functions\relax_fit.pyd] Error 1120 scons: building terminated because of errors.
C:\Python27\github\relax_disp> ----------------------------------------------------------- Searching for the problem, seems that "many" run into the same problem. But I don't know how to fix it? Do you? Troels Emtekær Linnet 2013/5/8 Edward d'Auvergne <[email protected]> > Hi, > > This "'cl' is not recognized as an internal or external command" error > is quite common. For example one solution for older SCons and MSVC is > given at http://www.nmr-relax.com/windows_devel.html#MSVS_scons_issues. > If you have 64-bit windows, then you have probably been bitten by an > SCons bug that I reported a long time ago and that the SCons > developers stubbornly refuse to fix: > > http://scons.tigris.org/issues/show_bug.cgi?id=2849 > > It is a one line fix which you can see in the second comment. Just > change those lines in your installed SCons code and it should run. If > these two suggestions do not work, then we need to look for another > solution. > > Regards, > > Edward > > > > > > On 7 May 2013 20:22, Troels Emtekær Linnet <[email protected]> wrote: > > Hi Edward. > > > > I use pyscripter and Ipython for coding, but def. not vim. > > I am aware of Python PEP style guide, and the indention thing. > > Trying to remember to comply to the rules of style. :-) > > > > I would need to program at home, since I cannot spend effort when I am > the > > lab. > > > > Still having troubles with scons. Tried following this: > > http://www.nmr-relax.com/windows_devel.html > > I installed scons 2.3 for windows > > And Visual Studio Express 2012 > > > > I don't understand this: > > 'cl' is not recognized as an internal or external command, operable > program > > or batch file. > > I can call cl from command line, so... > > > > Have you seen this before? > > > > ----------------------------------------- > > C:\Python27\github\relax_disp>"C:\Program Files (x86)\Microsoft Visual > > Studio 11 > > .0\VC\vcvarsall" > > > > C:\Python27\github\relax_disp>scons > > scons: Reading SConscript files ... > > scons: done reading SConscript files. > > scons: Building targets ... > > > > ########################### > > # Compiling the C modules # > > ########################### > > > > Building the relaxation curve fitting module > > 'target_functions\\relax_fit.pyd' > > > > cl /Fotarget_functions\c_chi2.obj /c target_functions\c_chi2.c /nologo > > /I"C:\Pyt > > hon27\Scripts\..\include" > > 'cl' is not recognized as an internal or external command, > > operable program or batch file. > > scons: *** [target_functions\c_chi2.obj] Error 1 > > scons: building terminated because of errors. > > > > C:\Python27\github\relax_disp>cl > > Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86 > > Copyright (C) Microsoft Corporation. All rights reserved. > > > > usage: cl [ option... ] filename... [ /link linkoption... ] > > > > > > > > Troels Emtekær Linnet > > > > > > 2013/5/7 Edward d'Auvergne <[email protected]> > >> > >> Hi Troels, > >> > >> I just noticed that you have a footer at the end of your messages. It > >> might be better to turn this off for mailing list messages - it's best > >> that your work number and address is not archived permanently all over > >> the internet. > >> > >> Regards, > >> > >> Edward > >> > >> > >> > >> > >> On 7 May 2013 14:18, Troels Emtekær Linnet <[email protected]> wrote: > >> > Hi Edward. > >> > > >> > Thanks for the lengthy explanation, and I hope that I can honor your > >> > effort > >> > in explaining. :-) > >> > > >> > I would be interested to get these things to work in relax, which we > >> > most > >> > often use in our lab: > >> > - off-resonance T1rho > >> > - CPMG > >> > -- Fast (Meiboom) > >> > -- slow/intermediate (Richard-Carver) > >> > -- very slow (Tollinger/Kay equation) > >> > > >> > So I will go for the Tollinger, since that is the "easiest" next to > the > >> > fast. > >> > > >> > I would need to do the code development at my Windows machine, and > >> > I checked out the relax-disp branch yesterday. > >> > Should I/How do I compile with scons under windows? > >> > Or should I install the pre-compiled Windows binaries, and replace > the > >> > files? > >> > > >> > Best > >> > Troels > >> > > >> > Troels Emtekær Linnet > >> > Ved kløvermarken 9, 1.th > >> > 2300 København S > >> > Mobil: +45 60210234 > >> > > >> > > >> > 2013/5/7 Edward d'Auvergne <[email protected]> > >> >> > >> >> Hi again, > >> >> > >> >> Just for reference in the mailing list archives, the sub-thread has > >> >> appeared as a new thread at > >> >> http://thread.gmane.org/gmane.science.nmr.relax.devel/3835. > >> >> > >> >> Regards, > >> >> > >> >> Edward > >> >> > >> >> > >> >> > >> >> > >> >> On 7 May 2013 11:36, Edward d'Auvergne <[email protected]> wrote: > >> >> > Hi Troels, > >> >> > > >> >> > This sub-thread (which will appear at > >> >> > http://thread.gmane.org/gmane.science.nmr.relax.devel/3833) will > >> >> > hopefully be a mini-tutorial covering the development of the > >> >> > relax_disp branch. Before you can be accepted as a relax developer > >> >> > with commit access to the source code repository, you should first > >> >> > submit changes as patches. This takes longer initially, but it > >> >> > allows > >> >> > the other relax developers to see how you code and if you are > >> >> > following the coding conventions as described in the development > >> >> > chapter of the relax manual > >> >> > (http://www.nmr-relax.com/manual/relax_development.html). I can > give > >> >> > you feedback as you go as to how to improve the code to fit into > >> >> > relax. We, the relax developers, will after a few patches have a > >> >> > private vote to accept you as a relax developer. This is standard > >> >> > practice in an open source project. The full procedure for > becoming > >> >> > a > >> >> > developer is detailed in the 'Committers' section of the manual > >> >> > (http://www.nmr-relax.com/manual/Committers.html). The PDF > version > >> >> > of > >> >> > the manual is easier to read > >> >> > (http://download.gna.org/relax/manual/relax.pdf). Patches can be > >> >> > posted to the patch tracker (https://gna.org/patch/?group=relax). > >> >> > > >> >> > relax development begins and ends with the test suite. The idea is > >> >> > that, before any code is present, a relax system test must be > >> >> > created. > >> >> > This allows you to develop the ideas for how the UI should work > with > >> >> > the analysis - i.e. which new user functions will need to be > created > >> >> > and which ones will need to be expanded. A script is added to > >> >> > test_suite/system_tests/scripts/relax_disp/ and then a test added > to > >> >> > test_suite/system_tests/relax_disp.py which executes the script and > >> >> > then checks the data and results. For example see the script > >> >> > 'test_suite/system_tests/scripts/relax_disp/hansen_data.py' and the > >> >> > function test_hansen_cpmg_data_fast_2site() in the file > >> >> > 'test_suite/system_tests/relax_disp.py'. This is obviously not > >> >> > complete as only the script is executed - the results are not yet > >> >> > checked (as we do not know what the result for the optimised model > >> >> > should be yet). This individual test can be executed with the > >> >> > command: > >> >> > > >> >> > $ relax -s Relax_disp.test_hansen_cpmg_data_fast_2site > >> >> > > >> >> > This test, as well as the other Relax_disp tests, were created by > >> >> > Sebastien Morin when he started the development of the relax_disp > >> >> > branch. I have renamed everything since he added it, and will > >> >> > probably do so again soon. It is best to develop for the script UI > >> >> > first - the GUI will later be modified around the graphical > versions > >> >> > of the user functions, or directly accessing the back end of the > user > >> >> > function. Due to the advanced state of the relax_disp branch, you > >> >> > probably do not need to worry about new user functions. This may > be > >> >> > needed if you would like to expand the analysis to new types of > data > >> >> > (for example off-resonance R1rho where R1 data need to be measured > >> >> > and > >> >> > used in the analysis, H/D exchange, etc.). > >> >> > > >> >> > The test suite is one area which can be expanded to handle the > >> >> > different CPMG models. The testing is currently not very > extensive. > >> >> > For example before a new dispersion model is added to relax, it > would > >> >> > be good if synthetic data were to be created in an external program > >> >> > (a > >> >> > Python script, Matlab, Mathematica, Maxima, etc.). It is very > >> >> > important that relax is not used to create the data. Synthetic > data > >> >> > is very important for making sure that relax obtains the correct > >> >> > result, as you know what the result should be. With measured data > >> >> > you > >> >> > can never really know what the true result is - this is the entire > >> >> > point of the mathematical field of modelling (this field makes that > >> >> > of > >> >> > NMR look very, very small). Synthetic data is also useful for > double > >> >> > checking results against other relaxation dispersion software (for > >> >> > reference: NESSY - http://home.gna.org/nessy/; CPMGFit - > >> >> > http://www.palmer.hs.columbia.edu/software/cpmgfit.html; > ShereKhan - > >> >> > http://sherekhan.bionmr.org/; CATIA - > >> >> > http://www.biochem.ucl.ac.uk/hansen/catia/). Data could also be > >> >> > taken > >> >> > from Art Palmer's CPMGFit manual > >> >> > (http://www.palmer.hs.columbia.edu/software/cpmgfit_manual.html). > >> >> > This would need to be converted into peak intensities in a peak > list > >> >> > file, but that is easy enough by simply picking random I0 values > for > >> >> > the exponential curves. The data could be passed quickly through > >> >> > each > >> >> > of the models of the CPMGFit program and results noted. Then the > >> >> > results would be added to the checks of different relax system > tests. > >> >> > > >> >> > Each different data set used in the testing process should be > located > >> >> > in its own directory in test_suite/shared_data/dispersion/. That > >> >> > directory can include the data and all scripts used to generate the > >> >> > data and, for reference, it can also contain subdirectories for > >> >> > holding the input and output for different programs (as long as the > >> >> > files are not too big). > >> >> > > >> >> > The current state of the branch is that all of the user functions > are > >> >> > pretty close to complete. The user function consists of a front > end > >> >> > definition in user_functions/, and a backend either in > pipe_control/ > >> >> > or specific_analyses/. The relaxation dispersion target function > >> >> > setup for optimisation is close to complete. You can see this in > the > >> >> > minimise() method of the specific_analyses/relax_disp/__init__.py > >> >> > file, and then the __init__() method of the class in > >> >> > target_functions/relax_disp.py. As you will see in the > model_loop() > >> >> > method of the specific_analyses/relax_disp/__init__.py code, > >> >> > clustering of spin systems is already part of this design - > >> >> > everything > >> >> > handles a group of spins assuming the same parameter values. One > >> >> > missing feature that I might work on soon is the handling of > missing > >> >> > input data, as this affects my current work. This is a problem > >> >> > currently caught by the > >> >> > test_suite/shared_data/dispersion/Hansen/relax_disp.py script, as > >> >> > residue :71 is missing data at one field strength. But once the > >> >> > dispersion tests have been expanded, this can be tested properly by > >> >> > deleting data for single points on the exponential curves, deleting > >> >> > entire exponential curves (or dispersion points for the two-point > >> >> > analysis type), or all data from a single spectrometer field > strength > >> >> > for a single spin. > >> >> > > >> >> > So I would suggest that you pick one of the dispersion models you > are > >> >> > interested in and try to implement that. I am working on the Luz > and > >> >> > Meiboom, 1963 model, but all of the other models are safe to work > on. > >> >> > Just say which you are interested in so that we don't both change > the > >> >> > same code. The system test data would come first. The formula can > >> >> > be > >> >> > taken, a set of parameters for 2-3 spins chosen, and a simple > script > >> >> > written to generate the R2eff data, importantly at multiple > magnetic > >> >> > field strengths. That data can then be converted into a generic > peak > >> >> > list for different time periods on a basic 2-parameter exponential > >> >> > curve. See the 'File formats' section of the > >> >> > spectrum.read_intensities user function docstring, for example by > >> >> > typing help(spectrum.read_intensities) in the prompt UI. In the > same > >> >> > script the creation of input files for other programs could be > added, > >> >> > possibly at a later stage, and the data quickly run through > CPMGFit, > >> >> > for example, for a sanity check. > >> >> > > >> >> > If you do test the other programs, you may encounter a severe bug > in > >> >> > one of their models. No software is bug free. In such a case, we > >> >> > should communicate with the authors in private and they can decide > >> >> > what to do. You can see that I did this with Art Palmer's > Modelfree > >> >> > program at > >> >> > > >> >> > > http://biochemistry.hs.columbia.edu/labs/palmer/software/modelfree.html. > >> >> > Versions 4.16 and 4.20 consist of patches that I send to Art to > fix > >> >> > compilation issues and other bugs (I pointed out the grid search > >> >> > problem due to the singular matrix failure of the > Levenberg-Marquardt > >> >> > algorithm and Art made that change himself). > >> >> > > >> >> > Once some data has been created and files attached to the patch > >> >> > tracker (https://gna.org/patch/?group=relax), then the relax > script > >> >> > can be written and added to > >> >> > test_suite/system_tests/scripts/relax_disp/. The best way would > >> >> > probably be for one of the current scripts to be copied (by me to > >> >> > start with) in the repository and then you make small changes to it > >> >> > and send the patches created with: > >> >> > > >> >> > $ svn diff > patch > >> >> > > >> >> > Then the script execution and data and parameter checking code can > be > >> >> > added to test_suite/system_tests/relax_disp.py - again you can look > >> >> > at > >> >> > the other methods in that file and create a new one by copying how > an > >> >> > old method operates. In that system test you would check that the > >> >> > original parameters have been found. > >> >> > > >> >> > At this stage, the test should run fine up to the grid_search user > >> >> > function, and then fail (or possibly at the relax_disp.select_model > >> >> > user function call in the script depending on whether you use the > >> >> > auto-analysis code in auto_analyses.relax_disp or not). This is > the > >> >> > point where the model can be implemented. Then you would take the > >> >> > following steps: > >> >> > > >> >> > - Add a description of the new model with the equation and > reference > >> >> > to the user_functions.relax_disp module. > >> >> > > >> >> > - Add the model and its parameters to the _select_model() method of > >> >> > the specific_analyses/relax_disp/__init__.py file. > >> >> > > >> >> > - Add any new parameter definitions to the top of the > >> >> > specific_analyses/relax_disp/__init__.py file in the __init__() > >> >> > method > >> >> > as needed. If new parameters are needed, then there are various > >> >> > places in the specific_analyses.relax_disp package where support > will > >> >> > be needed, mainly in the specific_analyses.relax_disp.parameters > >> >> > module. > >> >> > > >> >> > - Create a new module in the lib.dispersion package for the model > >> >> > function. This module will eventually hold the model function, the > >> >> > gradient (each partial derivative with respect to each parameter > >> >> > would > >> >> > be in a different function), and the Hessian (the matrix of second > >> >> > partial derivatives). Having the gradient and Hessian will allow > for > >> >> > the more powerful optimisation algorithms to be used. > >> >> > > >> >> > - Add a new method to target_functions/relax_disp.py which uses the > >> >> > new code in lib.dispersion to calculate R2eff values, combine this > >> >> > with the chi2 function, and return the chi-squared value (see the > >> >> > current func_LM63() method for how to do this). > >> >> > > >> >> > - Finally, see if the system test passes. If not, then it is time > to > >> >> > debug. > >> >> > > >> >> > During these steps, the unit test part of the test suite can be > used > >> >> > to make sure that individual functions and methods behave > correctly. > >> >> > This is useful as users will always find a way to break your code. > >> >> > Once the system test passes, then you will know that the > >> >> > implementation is complete and fully functional. > >> >> > > >> >> > > >> >> > If your interest is in the numerical integration of the > >> >> > Bloch-McConnell equations, then the procedure might be slightly > >> >> > different. We would have to discuss this in more detail, with > paper > >> >> > references and the necessary equations. But I think that all of > this > >> >> > can be handled in a module of the lib.dispersion package, and the > >> >> > rest > >> >> > of the above detailed procedure would be the same. I hope this > post > >> >> > wasn't too long for you! > >> >> > > >> >> > Regards, > >> >> > > >> >> > Edward > >> >> > > >> >> > > >> >> > > >> >> > > >> >> > On 6 May 2013 21:14, Troels Emtekær Linnet <[email protected]> > wrote: > >> >> >> Hi Edward. > >> >> >> > >> >> >> When you have completed your ideas of change to the > >> >> >> disp branch, could you send me a notits? > >> >> >> > >> >> >> And maybe a script file, how to launch the code? > >> >> >> > >> >> >> Then I could try to figure out where I should extend new code. > >> >> >> > >> >> >> Best > >> >> >> Troels > >> >> >> > >> >> >> > >> >> >> _______________________________________________ > >> >> >> relax (http://www.nmr-relax.com) > >> >> >> > >> >> >> This is the relax-devel mailing list > >> >> >> [email protected] > >> >> >> > >> >> >> To unsubscribe from this list, get a password > >> >> >> reminder, or change your subscription options, > >> >> >> visit the list information page at > >> >> >> https://mail.gna.org/listinfo/relax-devel > >> >> >> > >> > > >> > > > > > >
_______________________________________________ relax (http://www.nmr-relax.com) This is the relax-devel mailing list [email protected] To unsubscribe from this list, get a password reminder, or change your subscription options, visit the list information page at https://mail.gna.org/listinfo/relax-devel

