I just wanted to drop in and say what an amazing product Flow CSV is. I've spent months looking for an easy to use program to help me do quick analysis for my engineering projects. Most tools I found before either were way to complicated and specialized for data science work (which is far beyond what I needed), or TOO simple and not robust enough to handle the millions of datapoints I was processing. Flow masterfully achieves the challenging equilibrium of feature richness, seamless user experience, and exceptional programming optimization, rendering it perfectly suited for my needs. I cannot sing enough praises.
The ONLY feature I found to be missing is the ability to set an "offset" to variables directly (so I can easily shift my data around to line up events and compare waveforms). This can be done using the delay function in a formula variable, but when I have 20 something plots with long and detailed names to keep them distinct writing out a formula for each and every column becomes tedious. Otherwise, this program has every feature I need to do amazing and detailed work.
Thank you so much for the care and attention you put into this tool. It's functionality fits it's use case like a glove. It's going to make my work so much easier. I only wish I had found it sooner!
Amazing
Re: Amazing
Thank you so much for taking the time to post your acknowledgement - I really appreciate it, it means a lot!
I can see how using formulas can be a bit tedious for your case. Do you need to offset individual variables, or would it be enough to offset entire groups? I'm asking because other users have asked for the ability to "unlock" groups from each other, so that there's a horizontal scroll bar for each group.
While waiting for a solution in the app, maybe it helps you to know that the project files where the formulas are stored are human readable, and although it's a bit of a hack, sometimes it can be faster to just edit the project file in a good text editor. If you know a scripting language, you could possibly also write a script that generates a project file with all the delayed (formula) variables set up. Notice that Flow doesn't automatically reload externally changed project files, so you'd have to close and reopen the project after editing or generating.
Best regards,
Gustaf
I can see how using formulas can be a bit tedious for your case. Do you need to offset individual variables, or would it be enough to offset entire groups? I'm asking because other users have asked for the ability to "unlock" groups from each other, so that there's a horizontal scroll bar for each group.
While waiting for a solution in the app, maybe it helps you to know that the project files where the formulas are stored are human readable, and although it's a bit of a hack, sometimes it can be faster to just edit the project file in a good text editor. If you know a scripting language, you could possibly also write a script that generates a project file with all the delayed (formula) variables set up. Notice that Flow doesn't automatically reload externally changed project files, so you'd have to close and reopen the project after editing or generating.
Best regards,
Gustaf
Re: Amazing
Thank you for the reply! It is very useful to know that the project files are readable and editable in that manor, I will look into making a script to help me manage.
To answer your questions, for my use case I am aligning various pulses of data that occur at regular and irregular intervals. By doing this I can visually compare attributes of the pulses like amplitude, pulse width, and other particular factors. That being said, the ability to offset entire groups would not help me very much because I am attempting to align/compare attributes of individual waveforms (represented by variables in the software) on the same chart (within the same group).
However, if you were to implement the change you described and allowed different cells to have different horizontal scroll bars I could still see it being helpful for the way I use the software if the cursor maintained it's visual position across all groups (IE, if I have two groups of different horizontal positions, the cursor should still maintain a straight line down the page across both groups even if this means it's horizontal position is different between both). That being said, doing it like that sounds like a headache and a half to implement based on the way you already have the program setup, and it wouldn't be as useful as being able to compare them on the same chart.
In a perfect world where time and money grow on trees, my system would look something like this:
If any of this is unclear or you want me to expand further on this idea just let me know and I would be happy to provide more detail.
To answer your questions, for my use case I am aligning various pulses of data that occur at regular and irregular intervals. By doing this I can visually compare attributes of the pulses like amplitude, pulse width, and other particular factors. That being said, the ability to offset entire groups would not help me very much because I am attempting to align/compare attributes of individual waveforms (represented by variables in the software) on the same chart (within the same group).
However, if you were to implement the change you described and allowed different cells to have different horizontal scroll bars I could still see it being helpful for the way I use the software if the cursor maintained it's visual position across all groups (IE, if I have two groups of different horizontal positions, the cursor should still maintain a straight line down the page across both groups even if this means it's horizontal position is different between both). That being said, doing it like that sounds like a headache and a half to implement based on the way you already have the program setup, and it wouldn't be as useful as being able to compare them on the same chart.
In a perfect world where time and money grow on trees, my system would look something like this:
- Right click a position on the chart for a variable I want to move
- Select an option that says offset
- Click another position on the same chart were I want the position I previously selected to move too
- Change in X and Y position is auto calculated and either:
some kind of "offset attribute" is applied to the existing variable or,
a formula is auto generated and added to the group for the offset I selected
If any of this is unclear or you want me to expand further on this idea just let me know and I would be happy to provide more detail.
Re: Amazing
Thank you for elaborating on your use case - I understand completely! Yes as you obviously realize, there are some considerations when expanding the functionality, and in particular I try to avoid bloating or confusing the interface. I really like your idea of selecting multiple variables and generating new formulas from them all in one go. I think I would like to generalize it so that the user can enter any expression, for example:
Best regards,
Gustaf
- Select multiple variables.
- Right click and select "Apply formula template..." or something like that.
- Enter a formula template like <input>_offset = <input>[t-20].
Best regards,
Gustaf
Re: Amazing
Yes I think a formula template system would work well. It would provide a lot more functionality for various purposes. I suppose it would be akin to implementing generics into your formula system. As far as it being advanced, I don't think it would confuse anyone. It will be pretty easy to understand by example, and as long as the syntax is outlined in the help menu I don't think anyone would spend longer than 5 minutes figuring out how to use it.
One more thing came to mind on the topic of applying offsets with formulas. One limitation would be that you cannot apply a positive value to the t offset (IE myData_offset = myData[t+20] to move the dataset to the left). This is a relatively minor inconvenience that is solved by simply removing data in the editor, but it would be nice if this was functional because it would allow for data to be shifted in any direction along the plane using just the t function. I'm assume the reason this doesn't work now is because of the way formulas are implemented (a positive t direction would mean some of the datapoints would shift into the non-existent -x quadrant).
One more thing came to mind on the topic of applying offsets with formulas. One limitation would be that you cannot apply a positive value to the t offset (IE myData_offset = myData[t+20] to move the dataset to the left). This is a relatively minor inconvenience that is solved by simply removing data in the editor, but it would be nice if this was functional because it would allow for data to be shifted in any direction along the plane using just the t function. I'm assume the reason this doesn't work now is because of the way formulas are implemented (a positive t direction would mean some of the datapoints would shift into the non-existent -x quadrant).
Re: Amazing
Ok sounds good - I will include formula templates with the next version then!
The primary reason I haven't implemented offset the other way is because the causality analysis becomes a bit of a headache when formulas refer back to themselves. For example, y = y[t-1] + 1 is valid if computing y from beginning to end, and y = y[t+1] + 1 could be valid if computing it backwards from end to beginning, but y = y[t-1] + y[t+1] + 1 is impossible to compute and therefore invalid. It's not impossible to resolve, but it's quite difficult and I haven't prioritized it - yet.
Best regards,
Gustaf
The primary reason I haven't implemented offset the other way is because the causality analysis becomes a bit of a headache when formulas refer back to themselves. For example, y = y[t-1] + 1 is valid if computing y from beginning to end, and y = y[t+1] + 1 could be valid if computing it backwards from end to beginning, but y = y[t-1] + y[t+1] + 1 is impossible to compute and therefore invalid. It's not impossible to resolve, but it's quite difficult and I haven't prioritized it - yet.
Best regards,
Gustaf
Re: Amazing
Thank you so much!
Yes I can defiantly see that. Again, very minor issue for a minor kind of use case. The app has already made my analysis so much faster/easier. Thank you for your dedication to listening to your users and keeping it up to date!
Yes I can defiantly see that. Again, very minor issue for a minor kind of use case. The app has already made my analysis so much faster/easier. Thank you for your dedication to listening to your users and keeping it up to date!