Advertisement
jonathrg

Lab 2 code

Oct 7th, 2015
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.73 KB | None | 0 0
  1. %%% full_procedure.m
  2. % For å få det til å fungere må du ha Fiji.app i Path. Dra Fiji.app til samme mappe som koden, høyreklikk og velg "Add to path" -> "Selected folder and subfolders".
  3. clearvars
  4.  
  5. % Konfigurasjon, juster etter eget eksperiment
  6. RAW_DATA_FILENAME     = 'boogie.xml';
  7. METERS_PER_PIXEL      = 2.26e-7; % Funnet med ImageJ sin "Set scale"-funksjon
  8. SECONDS_PER_FRAME     = 1/7; % Det ser ikke ut til at ImageJ faktisk klarer å eksportere i ikke-heltallig bildefrekvens! Sjekk om din video faktisk har den bildefrekvensen du tror.
  9. TEMPERATURE           = 22 + 273.15;
  10. VISCOSITY_OF_WATER    = 8.9e-4;
  11. RADIUS_OF_PARTICLES   = 1e-6/2;
  12.  
  13. % Les data
  14. tracks                = readXML(RAW_DATA_FILENAME, SECONDS_PER_FRAME);
  15. steps                 = getSteps(tracks, METERS_PER_PIXEL);
  16. steps                 = removeStationaryArtifacts(steps);
  17. [mean_step, variance] = getMeanAndVariance(steps);
  18.  
  19. % Finn kB
  20. boltzmanns_constant = (3*pi*VISCOSITY_OF_WATER*variance*RADIUS_OF_PARTICLES)/(TEMPERATURE*SECONDS_PER_FRAME);
  21.  
  22. % Plott
  23. histfit(steps, 1000);
  24.  
  25. %%% readXML.m
  26. function tracks = readXML( raw_data_filename, scaleT )
  27.     % Importer all XML-data
  28.     % For å få gyldig XML-fil: gå helt til slutten av Trackmate-prosedyren, velg "Export as XML file" og trykk på "Execute"
  29.     disp(['Leser inn ' raw_data_filename]);
  30.     % Andre argument som true fjerner unødvendig informasjon om z-koordinat
  31.     % Tredje argument gir tid i fysiske enheter hvis du har endret 2. linje i XML-fila
  32.     tracks = importTrackMateTracks(raw_data_filename, true, scaleT);
  33.     disp(['Ferdig med å lese inn ' raw_data_filename]);
  34. end
  35.  
  36. %%% getSteps.m
  37. function delta_vector = getSteps( tracks, meters_per_pixel )
  38.     % Hent ut delta X og delta Y
  39.     delta_x_vector = [];
  40.     delta_y_vector = [];
  41.     for i=1:length(tracks)
  42.         track = tracks{i};
  43.         delta_x_vector = [delta_x_vector diff(track(:, 2))']; %#ok
  44.         delta_y_vector = [delta_y_vector diff(track(:, 3))']; %#ok
  45.     end
  46.    
  47.     % Alternativ 1: Konkatener delta X og delta Y (fungerer kun hvis man ikke har drift)
  48.     %delta_vector = meters_per_pixel*[delta_x_vector delta_y_vector];
  49.     % Alternativ 2: Dropp y-verdier
  50.     delta_vector = meters_per_pixel*delta_x_vector;
  51. end
  52.  
  53. %%% removeStationaryArtifacts.m
  54. function steps = removeStationaryArtifacts(steps)
  55.     steps(isArtifact(steps)) = [];
  56. end
  57.  
  58. %%% isArtifact.m
  59. function result = isArtifact(step)
  60.     % Kan forbedres eller tilpasses egne data
  61.     result = (abs(step) < 1e-8);
  62. end
  63.  
  64. %%% getMeanAndMeanSquare.m
  65. function [mean_delta, variance_in_delta] = getMeanAndVariance(delta_vector)
  66.     mean_delta = mean(delta_vector);
  67.     variance_in_delta = mean(delta_vector.^2) - mean_delta^2; % Siste ledd korrigerer for drift
  68. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement