Hello everybody. I would be very grateful if you could help me create a macro in image J:
- I open images in format (z000x_t000y, where y stays constant) that I want to save with a new name. I want to change the X value by adding or subtracting a certain value m (x+/-m). For example for z0005_t0000, z0006_t0000, z0007_t0000, if my m is -4, i would like to save the files as z0001_t0000, z0002_t0000, z0003_t0000 etc. Thank you very much in advance for your help. |
Inesica,
is this //---------------------------------------------------- m = -4; name = "z0007_t0000"; number = parseInt( substring( name, 1, 5 ) ); number +=m ; //if ( number < 10 ) { name = "z000"; } else { name = "z00"; } name = "z" + IJ.pad( number, 4 ) + "_t0000"; print( name ); //---------------------------------------------------- what you are looking for? You've ask a very similar question before and of course the answer is rather similar... You may have a look at <http://rsb.info.nih.gov/ij/developer/macro/functions.html> for the available ImageJ-macro functions. Best Herbie ::::::::::::::::::::::::::::::::::::: Am 06.05.16 um 14:27 schrieb inesica: > Hello everybody. I would be very grateful if you could help me create > a macro in image J: > > - I open images in format (z000x_t000y, where y stays constant) that > I want to save with a new name. I want to change the X value by > adding or subtracting a certain value m (x+/-m). For example for > z0005_t0000, z0006_t0000, z0007_t0000, if my m is -4, i would like to > save the files as z0001_t0000, z0002_t0000, z0003_t0000 etc. > > Thank you very much in advance for your help. > > > > -- View this message in context: > http://imagej.1557.x6.nabble.com/macro-rename-files-simple-tp5016330.html > > > > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hello,
Thank you very much for your response. However, I would like to do this for many files that are opened, not only for "z0007_t0000" as in your example and I would like to save them automatically with the new name. How can I do that? Thank you. |
Inesica,
I assumed that you could do the batch processing yourself by using the appropriate ImageJ-macro functions. The macro language is really easy! This macro works for me: //---------------------------------------------------- setBatchMode( true ); m = -4; dirPath = getDirectory( "Choose a Directory" ); nameArray = getFileList( dirPath ); for ( i = 0; i < nameArray.length; i++ ) { number = parseInt( substring( nameArray[i], 1, 5 ) ); number += m; name = "z" + IJ.pad( number, 4 ) + "_t0000.tif"; status = File.rename( dirPath + nameArray[i], dirPath + name ); if ( status == false ) { exit( "Could not rename" ); } } setBatchMode( false ); //---------------------------------------------------- Hope you are well-served Herbie ::::::::::::::::::::::::::::::::::::: Am 06.05.16 um 15:46 schrieb inesica: > Hello, Thank you very much for your response. However, I would like > to do this for many files that are opened, not only for "z0007_t0000" > as in your example and I would like to save them automatically with > the new name. How can I do that? Thank you. > > > > -- View this message in context: > http://imagej.1557.x6.nabble.com/macro-rename-files-simple-tp5016330p5016333.html > > > > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hello, thanks a lot!! However, I wanted to update the macro. Y is no longer constant and varies from 0 to 40 for ex. (t0000 to t0040). How could I add this to the macro and make the program work for the totality of t (from t0000 to t0040 for example)?
Thanks! |
In reply to this post by Herbie
Hello, could you help me with another problem that I have renaming ImageJ
files? I try to adapt the macro you gave me earlier, but I seem to be missing something. My files have these names: z0000_t0000, z0000_t0002, z0000_t0004 etc (until z0032_t0080) and I would like to rename z0000_t0002 to z0000_t0001; z0000_t0004 to z0000_t0002 etc; which basically means divide the number at the end by 2. So I adapted your function to: setBatchMode( true ); *m = /2; * dirPath = getDirectory( "Choose a Directory" ); nameArray = getFileList( dirPath ); for ( i = 0; i < nameArray.length; i++ ) { number = parseInt( substring( nameArray[i], 7, 11 ) ); number += m; name = substring(nameArray[i], 0, 6) + "t" + IJ.pad( number, 4 ) + ".tif"; status = File.rename( dirPath + nameArray[i], dirPath + name ); if ( status == false ) { exit( "Could not rename" ); } } setBatchMode( false ); but it does not seem to work. How can I change it to make it work? Thank you very much in advance. -- Sent from: http://imagej.1557.x6.nabble.com/ -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Good day!
Replace line "number += m;" by "number /= 2;" (of course without the inverted commas) and please try to learn macro coding which is really easy: <https://imagej.nih.gov/ij/developer/macro/macros.html> <https://imagej.nih.gov/ij/developer/macro/functions.html> Regards Herbie ::::::::::::::::::::::::::::::::::::: Am 05.03.18 um 11:15 schrieb inesica: > Hello, could you help me with another problem that I have renaming ImageJ > files? I try to adapt the macro you gave me earlier, but I seem to be > missing something. My files have these names: z0000_t0000, z0000_t0002, > z0000_t0004 etc (until z0032_t0080) and I would like to rename z0000_t0002 > to z0000_t0001; z0000_t0004 to z0000_t0002 etc; which basically means divide > the number at the end by 2. So I adapted your function to: > > setBatchMode( true ); > *m = /2; * > dirPath = getDirectory( "Choose a Directory" ); > nameArray = getFileList( dirPath ); > for ( i = 0; i < nameArray.length; i++ ) { > number = parseInt( substring( nameArray[i], 7, 11 ) ); > number += m; > name = substring(nameArray[i], 0, 6) + "t" + IJ.pad( number, 4 ) + > ".tif"; > status = File.rename( dirPath + nameArray[i], dirPath + name ); > if ( status == false ) { exit( "Could not rename" ); } > } > setBatchMode( false ); > > > but it does not seem to work. How can I change it to make it work? > > Thank you very much in advance. > > > > -- > Sent from: http://imagej.1557.x6.nabble.com/ > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
In reply to this post by inesica
Dear Inesica,
Probably one of the most important rule when you are debugging a code, is to use and highly abuse with outputs (in the macro language outputs are done with the instruction print) where you compare these output with what you were actually expecting. And remember: "practice makes perfect"!!! My best regards, Philippe -----Message d'origine----- De : ImageJ Interest Group [mailto:[hidden email]] De la part de Herbie Envoyé : lundi 5 mars 2018 12:57 À : [hidden email] Objet : Re: macro rename files simple Good day! Replace line "number += m;" by "number /= 2;" (of course without the inverted commas) and please try to learn macro coding which is really easy: <https://imagej.nih.gov/ij/developer/macro/macros.html> <https://imagej.nih.gov/ij/developer/macro/functions.html> Regards Herbie ::::::::::::::::::::::::::::::::::::: Am 05.03.18 um 11:15 schrieb inesica: > Hello, could you help me with another problem that I have renaming > ImageJ files? I try to adapt the macro you gave me earlier, but I seem > to be missing something. My files have these names: z0000_t0000, > z0000_t0002, > z0000_t0004 etc (until z0032_t0080) and I would like to rename > z0000_t0002 to z0000_t0001; z0000_t0004 to z0000_t0002 etc; which > basically means divide the number at the end by 2. So I adapted your > function to: > > setBatchMode( true ); > *m = /2; * > dirPath = getDirectory( "Choose a Directory" ); nameArray = > getFileList( dirPath ); for ( i = 0; i < nameArray.length; i++ ) { > number = parseInt( substring( nameArray[i], 7, 11 ) ); > number += m; > name = substring(nameArray[i], 0, 6) + "t" + IJ.pad( number, 4 ) + > ".tif"; > status = File.rename( dirPath + nameArray[i], dirPath + name ); > if ( status == false ) { exit( "Could not rename" ); } } > setBatchMode( false ); > > > but it does not seem to work. How can I change it to make it work? > > Thank you very much in advance. > > > > -- > Sent from: http://imagej.1557.x6.nabble.com/ > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Free forum by Nabble | Edit this page |