MFP3D FAQ
See also Forum
Software
Mac Setup
2nd MFP3D Computer
Setting up an offline rig
Update Igor
Igor 6 Setup
Igor Copy
Code to Click On Buttons
Version Numbers
Other
WLC fitting
Adhesion
ASCII Exporting
InVOLS, calibrate
FTP upload |
|
How do I set up a Mac to run the MFP3D software?
You will need to contact Wavemetrics (http://www.wavemetrics.com/) to upgrade your Mac copy of Igor to version 6.
There isn't an MFP3D installer for the Mac, but it's not too complicated to move the necessary files.
1) Copy the contents of the AsylumResearch folder from your PC to the Mac into the Igor Pro folder (located in \Program Files\Wavemetrics\Igor Pro Folder\).
2) From the Igor Help folder on the PC, copy the MFP3DHelpFiles folder to the Igor Help folder on the Mac (also located in \Program Files\Wavemetrics\Igor Pro Folder\).
3) From the C:\Program Files\WaveMetrics\Igor Pro Folder\Igor Procedures folder, copy MFP3DAlwaysThere.ipf from the PC to the MAC.
4) Open up the MFP.pxt file on your Mac. It will complain a couple of times as it tries to start up, and it will not compile. That's OK. Here's how to fix it.
5) Go to the Windows -> Other Windows -> Initialize.ipf menu
There will be a red line below a bunch of similar lines near the top that reads:
//#include ":AsylumResearch:Code:tdFake"
Click on the pencil icon in the lower left corner to allow changes to be made.
Then uncomment the line (delete the "//").
6) Click on "Compile" (it should work now)
If it works then go to the File -> Save Procedure menu (only visible when a procedure window is topmost), and save the changes.
Things should be good to go.
Back to top
How do I fit force plots with the WLC model.
1) Find the force plot you what to fit.
2) Plot it as Force Vs. Sep (Sep is short for tip - sample separation). The X axis is controlled with the popup menu beneath the Y axis data type list, on the Display tab.
3) You need to define where 0,0 is. To set the offsets you can either right click on the graph to offset X and Y, so that the force is zeroed, and the tip hits the surface at zero separation, or go to the Mod tab, and click on "Y offset" and "Raw (X) offset".
4) Go to the cursor tab, select that you only want cursors on Ret (short for retract).
5) Shift + left click on the graph to define the stretching regions. You want to define the error region of the fitting function, so pick one point where the polymer ruptures its attachment to the tip, and pick the other point at the lowest extension as the data looks like it will be fit. You can fit multiple stretching events in a single force plot. If you want to do that, pick two "locks" (cursors) to define each stretching event (the software calls polymer stretching events hitches).
6) Go to the WLC tab. Make sure that the initial state of the parameters is close to the data; the fitting function often throws up its hands in despair if the initial guess is too far from the data. The Pers is the persistence length; it is basically a measure of the polymer's stiffness. Lower persistence lengths have much more non-linear responses. The extension ratio is the fraction of the contour length that the polymer chain is extended. The fit parameter is the extension ratio where the polymer chain ruptures its attachment to the tip (max extension ratio). So you can get the contour length of the chain from the rupture length divided by the max extension ratio.
7) Once you have your fit parameters fairly close to the data, you can then click Fit.
8) If you have multiple hitches in a force plot that you want to fit, then there are two questions you have to answer.
A) Is the observed response due to one chain with domains or loops; or is each hitch the result of stretching a separate chain? If you think you have a single chain, then you want to unselect Multi Chain (upper left corner). If you think that each hitch is from a separate chain, then select Multi Chain.
B) Do you think that each hitch should have the same persistence length? Generally this is the case, but isn't required by the fitting function. If you want to fit each hitch to a single persistence length, then select Single Pers; if you want each hitch to have its own persistence length parameter, then unselect it.
9) You can also hold and constrain each of the fit parameters using the hold and constrain checkboxes. Hold means that the fitting function will hold that parameter constant and not fit it. Constrain means that it will keep the fit parameter between the upper and lower limits (the limit controls show up after you constrain one of the parameters. I have to admit that the constrain option does not work well with this fitting function.
10) Once you like the fit, you can show the individual responses by clicking on the "Show Individual Stretches" checkbox. Then you can label the contour length of each response with the Tag Stretches checkbox.
11) You can also tweak your fit with the Max Iterations and Fit Tolerance controls. And finally you can specify the temperature at which the stretching was done with the temperature control.
Back to top
How do I export my data in ASCII format?
You can export any wave in Igor. 90% of the battle is finding the wave.
For any wave displayed on a graph:
New Quick and dirty way in Igor 6
1) This way makes a table of the trace, and you can copy and paste that into your spread sheet or notepad. It is a fairly good way to get force plot data exported, since it grabs the X data with it. But it depends, in the offline, it will only grab 1 section at a time, extend, retract, or a dwell. In the realtime force, it will grab the entire force plot, so there are options.
1) Right click on the trace you want to export.
2) Select Edit
3) Right click on the Table.
4) Select Digits, then select the highest number there (16 at the moment).
5) Hit Ctrl + A, to select the entire table
6) Hit Ctrl + C to copy the contents of the table to the clipboard.
7) Paste your ascii data into your preferred format.
Older-slower-more-general-way for more precision
1) Double click on the wave. You get a modify trace dialog.
2) *Hold Down* the left mouse button on the name of the wave that looks like the correct wave. The box below then shows the data folder that is holding that wave.
2b) A different way to find the folder (which I just learned myself) is to hit Shift + F1, then click on the trace. This brings up a tooltip type box with the names of the waves, and the data folders.
3) Go to the Data -> Data Browser menu.
Locate the data folder that was shown by the dialog.
Alt + left click to the left of that data folder. There should now be a red arrow pointing at that folder and letting you know that you are sitting in that folder.
4) Go to the Data -> Save Waves -> Save Delimited Text menu.
Select the wave from the list of waves in that data folder.
5) Click Do it. Then select where you want to save that .dat file.
6) Note images are layered waves, 3 dimensional. Ascii can only handle 2D waves, so the layers are stacked in the rows.
EX:
• Make/N=(3,4,2) LayeredImageWave
• LayeredImageWave = P+Q*10+R*100
[P is row index, Q is column Index and R is layer Index, all indexes start at zero]
• Save/J/M="\r\n" LayeredImageWave as "LayeredImageWave.txt"
saves the dat file with this in it:
0 10 20 30
1 11 21 31
2 12 22 32
100 110 120 130
101 111 121 131
102 112 122 132
As you can see the 4th row and above are > 100, they came from the second layer of the igor wave.
So you can either deal with all the data in 1 wave, pulling the layers out that you want.
Or you can save only the layer you care about by first extracting the layer (with the command popup, extract layer)
and then saving the wave LayerData as the ascii.
Back to top
What is InVOLS and how do I use it?
InVOLS stands for the Inverse Optical Lever Sensitivity.
Most AFMs use the optical lever detection method, where light is bounced off of the end of the cantilever, and is reflected to a segmented photodiode. By looking at the voltage on the various segments of the photodiode, we can determine how far the cantilever is deflected. To do this, you make the assumption that the voltage difference between the top two segments and the bottom two segments is linear with deflection. This is, in general, a valid assumption, particularly in the smaller the voltage ranges, and the closer you are to zero volts difference between the top two segments and the bottom two.
So InVOLS defines the response of the photodetector so that you can convert the voltage signal to the distance the cantilever is deflected.
How do I calibrate it?
Do a force plot on a hard, clean surface (probably in contact mode) and get a good deflection vs. LVDT plot. You want to have a nice linear region where the tip contacts the surface. On the graph, hit Ctrl + I and put the A and B cursors on this linear region. It's best to keep the region fairly close to zero. Make sure both cursors are on the same part of the line, either red or blue. A quick check for this is to hit the left or right arrow key. If both cursors move in the same direction, things are good; if they move in separate directions, zoom in on one of the cursors and switch it to the other color (you want them both on either Extend or Retract). Then go to the force tab of the master panel and select Deflection from the "Set Sens" popup. This will fit the region between the cursors to a straight line and calculate your InVOLS. You're now all set to collect thermal data and calibrate the spring constant.
To get rid of the black fit line on your data graph, right click on it and select Remove fit_deflection.
Back to top
Customer instructions for leaving files on our FTP site
We have a new method of sending us files, which is still in development.
This method is being integrated into the MFP3D software, so where you see little FTP buttons, it will open up your browser to the following page, and direct you to drag the saved files to our FTP server.
go to: http://www.AsylumResearch.com/upload.
This page requires java 1.5, which you can download from here:
http://www.java.com/
it will show you: Regrettably, you need to decide if you want to accept this before you click on the link. Some browsers tend to hang if you cancel.

We are working on getting this registered and certified so that you won't have to deal with this popup, but click on run, and it will bring up the Java drop box. You can then drag files from windows explorer to the java drop box and they will be sent to our FTP server. You should still send us an email telling us to go check for the file, and if you want to send us multiple files, please zip them into 1 file, makes life a lot easier.
If that does not work for you, you can try the old way:
- Before you begin, please arrange your files into a single ZIP file. This makes the file transfer easier as well as providing a way to check the integrity of the files. Please do not drag folders onto our FTP site.
- Open a browser and go to "ftp://dna:puller@ftp.AsylumResearch.com/incoming/". It has to be EXACTLY everything in between the quotes. You should get a blank screen. If not, you might have to turn on folder view, which you can do under "Tools/Internet Options/Advanced Settings" in Internet Explorer. Select "Enable Folder View for FTP Sites".
- Take the file and drop and drag it onto their browser window. It should proceed to copy it to our site. If there is trouble, it could be due to your firewall. Use "Passive FTP", which can be found under "Tools/Internet Options/Advanced Settings" in Internet Explorer. It might appear as if your file disappeared after your uploaded it. Don't to worry, it is still there. This is a side effect of the security we use to prevent people from using our site to trade software, French movies, and MP3s.
- Then send an email message to the person you wish to receive this file, so that they will know to go grab it. The incoming FTP site is not something we routinely check.
Back to top
How do I setup a second copy of Igor on my MFP3D computer?
This can be useful if you want multiple versions of the MFP3D software, particularly if one or more of your users are going to be modifying the MFP3D software. It is very useful to give those users separate copies of Igor so that the modifications do not interfere with the rest of your lab.
To make another copy of Igor on your MFP3D computer, go to:
\Program Files\WaveMetrics
Copy "Igor Pro Folder" into the same folder, so that you will have
"Copy of Igor Pro Folder" and "Igor Pro Folder" both in
\Program Files\WaveMetrics
Optionally rename "Copy of Igor Pro Folder" to something else, say Freds Igor Pro Folder.
Now you are all set to install or update either Igor. Using the original Igor will be fairly straight forward. It will be registered with windows as the default Igor, so if you double click on any Igor file (pxp, pxt, ibw, etc.) then the OS will try to launch the original Igor and pass it the file you double clicked. The trick is if you want to open up the file with Igor copy. To do this you will have to first launch the Igor copy by double clicking on the Igor.exe executable in
\Program Files\WaveMetrics\Freds Igor Pro Folder
(or whatever else you named it to).
You can also make a shortcut to the Igor copy executable to make your life easier. Once the Igor copy is launched, then when you double click on a Igor file, the OS will pass that file to the running Igor. Another option we often use the file -> Recent Experiments menu in Igor to open up experiments in the Igor copy.
Having multiple copies of Igor on your computer can be a little confusing to work with at first. One thing to be careful of is to not to click on the original Igor Pro Folder's MFP3D template.pxt when the Igor copy is running. Weird things happen since it is loading the template for the original Igor, but using the Igor copy and the MFP3D code installed in Freds Igor Pro Folder. Other than that it works quite well.
Another thing to be aware of is that installing Igor to the copy's location will register that Igor as the default Igor. Then the tables are turned and when you double click on a Igor file without any Igor open, windows will launch the copy of Igor, and pass the file to that Igor. Once you reach this state it is always safer to open the Igor executable you want, and then start bringing in files (i.e. the MFP3D template.pxt) to that Igor.
Back to top
How do I setup Igor 6 on my MFP3D computer?
As of versions > 070111 we have stopped supporting Igor 5 with the MFP3D software. In order to get software updates you will need to upgrade your copy of Igor to version 6. If you do not have a copy of Igor 6, please see our forum.
1) If you want to keep a copy of Igor 5 around you should follow the instructions on how to setup Igor copies. If you don't want to keep a copy of Igor 5, skip this step
2) Install Igor 6. It will complain that you have an older version of Igor on your computer, and that you should uninstall it. We have been ignoring that warning, and everything has been fine. It will ask you for your activation key and serial number.
If you install Igor from CD, it will most likely install Igor 6.00. If you install Igor from a download it will install a newer version of Igor. But it is always a good idea to check for updates, our code generally requires the most recent release from wavemetrics. To update Igor follow the instructions on How to Update Igor 5.
3) Download the MFP3D software; for current version see our forum.
4) Run the MFP3D installer choosing the folder you installed Igor 6 to in step 2.
5) You are ready to run.
How to setup a second MFP3D Computer?
First off, Install a new license of Igor as outlined in Igor 6.
Then you will need to install the drivers for the USB ports. First you will need to download the drivers from here:
http://www.AsylumResearch.com/Files/MFP3Ddrivers.zip
Save this zip, and unpack it on your desktop (or somewhere you can find quickly, you will be pointing at it a number of times).
Plug in the controller and power it up.
Windows will say it has found new hardware, an unknown USB device.
Go through the New hardware wizard and go through the advanced option.

Then when it asked for a location, tell it where you unpacked your zip file.

It will then install the drivers for the controller. When this is done it will say that the hardware is all set to use, but give it a few seconds. It will then say that new hardware has been found and force you to jump through the same steps you just went through. Don't worry, the second time through should be the last time you have to do it for that port. Each and every USB port on your computer will ask you about the drivers the first time you plug the controller into that port. We recommend that you plug the controller into each USB port on your computer, so that you won't have to deal with it later.
When you start up the software, it will bring forward the parm panel showing that a number of calibration constants are red, meaning that there is a discrepancy between the hardware and software values. This is because you don't have software parm values on your computer yet. So when that panel comes up, click on Move all under hardware, then click on the Use the "use This" Values button at the bottom. That will enable the Save the "Use This" Values to software button. Clicking on that button will save the calibration constants to the harddrive, so you won't have to deal with this dialog again (until there is a real problem).
Back to top
How to setup an offline rig?
First off, you need a new license of Igor Pro 6, which can be purchased from wavemetrics.
You can get downloads from them to install today, and that generally gets you updated as well.
But make sure your Igor pro is updated to the latest version from wavemetrics, see also Igor Update. Then you need to install the MFP3D software. For offline rigs, it is best to use the same version as the real time rig. To get the version number of the MFP3D software on your real time computer see versions.
Send us the version number, and we can get you a download link to that version. If you want to try out the latest version of the MFP3D software, you can download that from the forum, but you should note that loading experiments from older versions into newer versions is a very buggy process. It is by FAR a much better idea to load just the data ibws (images or force plots) into the newer software. That will run into weird errors only very rarely. Most of the time loading an old experiment into new software will result in error messages being displayed constantly.
For people who really want to try out the new software on the offline rig first, I would strongly recommend setting up a copy of Igor, so you can have the main copy of Igor run the same version as the real time rig, and the second copy of Igor on the offline rig can run the latest version.
Lastly, there are some calibration files that are missing from your offline machine. These don't matter, since you are setting up an offline machine, but will report errors. You can either copy them from the Real time machine, or just use the software to save dummy files.
To copy:
grab ParmWave.itx and ARVSoftParmWave.ibw from
\AsylumResearch\Code3D\OriginalParms\
where is the path to the Igor.exe [typically c:\Program Files\WaveMetrics\Igor Pro Folder\]
To create dummy files:
from the command line type:
MakePanel("Parm")
Then click on the "Use the "Use This" Values" button
Then click on the "Save the "Use This" Values to Software" button
then from the command line type:
MakePanel("ARVParm")
Then click on the "Save the "Use This" Values to Software" button
.
Back to top
How to update Igor?
Do NOT update to beta versions of Igor.
These versions often do not get along with the MFP3D software. Make sure that the web page you download the Igor update says release, and not beta.
Many MFP3D software updates will require you to update Igor as well, as we use the new features of Igor. The easiest way to do this is to open Igor and go to the Help-> Updates for Igor 6.0.x.x menu item. This will take you to a web page on the Wavemetrics site that will tell you if you can update Igor or not.
If your MFP3D computer is NOT connected to the network, then you have to do some more work. You can download standalone updates for Igor from the support page.
http://www.wavemetrics.com/support/versions.htm.
Otherwise you will have to type in a URL; say you have Igor 6.0.1.0, and you want to get updates for that. Then you would type in
http://www.wavemetrics.com/Updates/IGORPro/igor6updatecheck.php?version=6.0.1.0&platform=Win
And of course, if you are running into any trouble with this contact WaveMetrics or Asylum.
Back to top
How to get adhesion data?
OK, so you have some force plots and you want to get a histogram of adhesion values, here's how to do that.
1) Load your data into the Force review panel, which is started from the MFP IP -> Force Display Panel Menu.
2) Go to the analyze tab.
3) Make sure that first popup is adhesion.
3.1) If you only want to look at a subset of the data, check your limits (Start index and Stop Index).
3.2) Note that these are indexes, Not suffixes, so use the values for the indexes on the display tab. For example you want to look at the adhesion values for data from ForcePlot0010 to ForcePlot0078. Go to the display tab, select ForcePlot0010, record the value listed in the Index control, and enter that value in Start Index on the analyze tab. Then go back to the display tab and select ForcePlot0078, record the index and enter it in Stop Index on the analyze tab.
4) Check the Histogram checkbox.
5) Yeah it is that easy.
So what are you looking at? It is the difference between the lowest point in the retract deflection data and the average of the last 5 points of the retract deflection data. So if you are stretching molecules, this value may or may not be the stretching events. If the adhesion for a force plot is stronger than the stretching events, then the adhesion will be recorded for that force plot. If the stretching events for a force plot are stronger than the adhesion, then the strongest rupture will be recorded.
Another handy tool is the edit button on the histogram. This puts up a table of the adhesion values, with labels for the force plot from which those values were obtained. This way you can go through the values, and see which force plots are giving your which adhesion values.
Back to top
How write code to click on buttons?
One of the easiest ways to get started writing Igor code is to write something that simply clicks on Asylum buttons in a certain order. Here is how to get started with that.
1) Bring up the panel that has the button you want to click on.
2) Hit Ctrl + T to bring up the tools for the panel.
3) Click on the second button on the left that now shows.
4) Double Click on the button you want to use.
5) For buttons there are 2 things you need to get from this dialog. The Control name (First field of the control dialog), and the function the button calls (listed in the procedure popup in the control dialog). You can click on the edit button, and then copy the function's name.
For example here is the dialog for the Do Scan Button:

So from this you need to get that the name is DoScan_0, and the function is DoScanFunc. Since this is a button (Checkboxes, popups, etc are all different), the function has 1 argument, and it is probably a string. OK This is where things get a little complicated. Since Igor 5 we have 2 ways we can write control functions, either with a structure or with the classical input arguments. Most of our controls use the classical input arguments, but if you click on edit in the control dialog and see something like this:

Which is the function dialog for the little "3D" buttons on the offline image graphs.
Note that the input argument is Struct WMButtonAction &InfoStruct
Which is the new style. So you have 3 options:
A) Always use our function ARExecuteControl, explained below.
B) If it is a classic style function (Single String argument), write the call to it, such as:
DoScanFunc("DoScan_0")
C) If it is a new style function (Single Struct argument), write the call to it, such as:
Struct WMButtonAction &InfoStruct
InfoStruct.CtrlName = "DisplayArgyle"
InfoStruct.Win = "Display0Image0000" //name of graph the button is on.
InfoStruct.EventCode = 2 //Buttons almost always get event code 2.
InfoStruct.EventMod = 0 //This tells us things like shift click, or Ctrl click.
//and finally call the function
OfflineGraphFunc(InfoStruct)
If you notice in the dialog above, we put in comments for each field of the structure we use. This is not always 100 % accurate, but should be all the fields we use most of the time. So for the example above, we use the eventMod, which if you want a normal click would be 0. Other functions may use other fields. Now if you were to do this with ARExecuteControl, it is not going to know about these other fields, so if you wanted to call the 3D button with a shift click, then you would have to write a call to OfflineGraphFunc directly.
How to use ARExecuteControl
This function tries to click on the control specified, it can handle buttons, Checkboxes, SetVars, Popups, or a tabControl.
Function ARExecuteControl(ControlName,GraphStr,VarNum,VarStr)
String ControlName,GraphStr
Variable VarNum
String VarStr
//This function executes a control of types:
//Button, Checkbox, Popup, SetVariable, or TabControl
//The controlName is the name of the control
//GraphStr is the name of the window the control lives on
//VarNum is a variable describing the state of the control you want to be in. (i.e checked for a checkbox)
//VarStr is the same deal as VarNum, just for strings, i.e PopStr for Popups.
//Note that for popups, VarNum is ignored, the popup list is obtained,
//and the popNum is found based on the VarStr.
//error returns
//0, all is good (as far as we know)
//1, control does not exist
//2, Control it not a supported type
//3, Control does not have a function to call
//4, Number of arguments does not match control type.
//7, Function does not exist as a user function
//9, should be impossible, this should have exited on 2, means this function is screwed up.
So to use ARExecuteControl, you also need to know the window name the control is on. To get that, bring up the window, and hit Ctrl + Y, copy out the name in the second field, Window Name (not window Title). The up side is that you don't need to know anything about the button's function.
So for the DoScan button example:
ARExecuteControl("DoScan_0","MasterPanel",0,"")
Buttons don't use VarNum, or VarStr
And to call OfflineGraphFunc: ARExecuteControl("DisplayArgyle","Display0Image0000",0,"")
Back to top
How to determine your MFP3D Software Version?
So you have a problem with the software. In order to help us fix the problem, we need to know what version number you are running. The most important number for us is the MFP3D Software version number (#1 below). This is the 6 digit number (YYMMDD) in the title bar. From that we can determine the various Xop version numbers (#2-4). It may also be useful for us to know the Igor version number (#5), but generally this number does not matter too much.
You have 5 version numbers that describe the MFP3D Software.
You can see all the version numbers from the Help -> MFP Versions menu.
In recent versions:
Go to the Help -> MFP Versions menu.
This will bring up a table of all your versions.
Hit Ctrl + A (to select the entire table).
Hit Ctrl + C (to copy the contents of the table to your clip board).
Go to your email program where you are writing up your bug report.
Hit Ctrl + V (to paste the table into your email message).

Now for the old way, for those of you that have software version < 050811.

1) The MFP3D Software Version number. This is probably the most useful version number for you. It is a 6 digit number of the date (YYMMDD) that it was made. On versions ( > 050603) this number is also on the titlebar.
2) The MFP3D Xop Version. This is a number such as 24 up 2. It describes the build number of the xop that runs the controller. On older versions of the MFP3D Software (< 050603) this number was also on the titlebar. Newer versions this number is on the status bar (on the bottom of Igor).
3) Argyle Version number. This is a standard 4 number version such as 1.0.0.12. This Version number describes the build number of the Argyle xop that does the 3D open GL rendering.
4) Utilities version number. This is another standard 4 number version such as 1.0.0.12. This Version number describes the build number of the utilities xop that does various things.
5) The Igor version number, shown in the title bar, as well as from the Help -> About Igor Pro menu.
Now for the really old way, if you have a version from the beginning of 2005 or older. When you go to the help -> MFP Version menu, you will get a little message with your MFP Version in it. That is the only way to get the MFP3D Version number. It should also be printed out in the history window so you can copy and paste it.
Back to top
|