"Asking people to clarify their question" This has to be number one for me.
Like in everything else we do, the 80%-20% rule works great in bioinformatics. What is your 80% of the time wasted on? I can suggest:
- converting accession numbers between databases
- parsing output
26 answers
- Converting one file format to another file format.
- Converting one file format to another file format.
- Converting one file format to another file format.
Asking people to clarify their question.
Pointing people towards the free online help/tutorial/documentation that already answers their question.
After some more thoughts, the process is more akin to helping them to formulate their own questions...
I spend 80% of my time actually reading documentation. But I'm one of a very small number of people who actually do that I think...
What do you mean? Could you please clarify?
- Trying to find more new tutorials on subjects that I already know much about
- Browsing references citing one article, and references citing them and references citing them .....ad infinitum
- Downloading lot of journal articles thinking that their algorithms will come handy some day
- Browsing through random codes, by goggling filetype:python etc.
Arguing with my lab mates about variant calling pipelines.
replacing files, versioning, pruning, waiting for stuff to finish running
yeah, the waiting thing kills sometimes
I always try to race the program. If I can write a faster version before it finishes running, or add substantial-enough improvements to make the output of the original obsolete, I kill it and start over. That puts a bound on how slow my programs can be - they never take longer to run than they do to write :)
Comparing results from different methods takes a lot of time too.
Installing packages and relevant version of perl and python X.X.X.X.... with out admin privileges :)
Oh, yeah, this is what kills me the most, Our cluster is not connected to internet for security reasons and image for for R or perl when you are installing a package that has a lot of dependencies. Also if one package works only with recent R versions, make me sick :)
https://github.com/pengchy/RScript/blob/master/download_r_packages.R
Maybe this script will help you.
This script is used to 1) download the latest source packages to local; 2) update local source packages; 3) download dependencies of one specified package
book keeping, debugging, keeping pace with version changes of the tools
For version 2 we decided to change every flag, just to make things more interesting.
Trouble shooting for several hours when I Install packages which cannot run just because of outdated python or R version (that too without having system admin privilege)
use conda manager! ;)
The following is an example of R code. It contains a small error, which when hidden in a >200lines scripts causes an error message that is incomprehensible to most human beings. Can you find it?
myarray = c(1,2,3,4,5,)
Most of my time goes wasted fixing silly R syntax errors like this. I really wish Python had more libraries for working with large datasets and plotting :-/.
Have you looked into rpy or rpy2?
http://pandas.pydata.org worth a look
Thank you for both answers :-) But for now I have all my code in R, maybe next time I'll try with pandas.
Are you kidding? Try using R to operate on terabyte hdf5 files.... Have you seen matplotlib? mayavi? Who would waste their time debugging R when you can use better tools in Python? You can always wrap your old R code using Rpy.
You shouldn't be trying to read huge files with R, but you also probably shouldn't be trying to do complex statistics in python. The right tool for the right job. :-)
Actually I find that R has a wider range of options for reading large files than python. You have the rhdf5 library from bioconductor, the sqldf library that allows you to read csv files to a database instead of keeping them in memory, and much more. I have used with great results PyTables for reading HDF5 in python, but I just find that R has more options.
useful information, when I met large data, I will first try shell, then perl. I will try the rhdf5 library in the future.
Simple, the last comma.
If R error messages were more informative, it would already be a huge improvement. What about simply telling us on what file/line the problem is happening?
Rerun the analysis after finding a bug in the scripts, or found a wrong parameter used, or new data input.
I do that all the time. Totally worthwhile! It's as least as useful as exercising on a treadmill, but more fun.
True, while most time the use of existing tools would save me time and even provide me better solutions, reinventing the wheel is definitely fun and instructive!
Searching for data and their quality check.
Searching for hours and hours just to find out that such data does not exist yet. Or that although in 1000 HGP does exist excel with families, they have not been sequenced yet. Trying to find out if the reads are genomic/RNASeq, who published them, male/female and so on..
Converting between formats.
Installing new software.
Waiting for results. I am no good in doing 5 things at the same time :-)
I've heard so many people say the exact same thing about searching for data and understanding its quality. You should check out Repositive
Not only do they index 35 human genomic data sources (which is over 1 million datasets), but they also allow you to request data from the user base and allows users to comment on datasets and ask questions before committing to download. It's FREE to use and a great resource for finding new data sources.
Figuring out which tool to use. Lately, for analyzing miRNA data. Any pipeline suggestions?
A waste of time comes with a loud indicator: Just see how you feel after an activity. Are you energized or drained by it? Are you happy or resentful for it? You know the feeling when you’ve wasted your time. I find all of these a giant waste of my time, but if you don’t, well that’s why we have the comment section, so tell me what you think.
Making sure all the analyses I rushed off in an excited whirl are properly written up and documented in reports/notebooks where I should have done them in the first place. Making sure all the labels are rotated correctly, the titles in plain english, the color viewable to color blind people etc....
Managing branches across a codebase with 15 collaborators across three forks and tens of branches.
Aye to the rushed analyses and the last-minute documentation. Horrible, but somehow it happens all the time.
In here, answering others' questions. :)
functional interpretation of protein lists from comparative proteomics studies
Meddling with incorrectly annotated genes/proteins.
Trying to stay organized.
Debugging my scripts because a new dataset broke them in an unanticipated way--and just when I thought they were robust to all errors :(
Figuring out how a dataset file had been created (i.e. "Is this the right file? How was it filtered?").
Reinventing the wheel. Like, all the time. Why use clusterProfiler with an up-to-date GO-annotation, when you can just write your own client for PANTHER-ORA? Oh, PANTHER does not report genesets back. Why not just write a custom GO-slim for semantic extraction of cognate genes? I guess you only learn by making mistakes.
Trying to understand formats that have
- too verbose documentation: it take years to understand the subtilities (exception, trap, etc...) or
- too poor documentation: You end up by reading the code to understand the subtilites or you end up by doing try and fail method until you found how to use it for your purpose, until you have search again because you need it for another tool that need it in a different way.
=> The day you will be confident how to use it, the format will change (updated) or be deprecated, and you start over
Trying to understand tools that have
- too verbose documentation: it take years to understand the subtilities (specific vocabulary and format, exception, trap, etc...) or
- too poor documentation: You end up by reading the code to understand the subtilites or you end up by doing try and fail method until you found how to use it for your purpose, until you have search again because it does not fit for your new purpose
=> The day you will be confident how to use it, the tool will change (updated) or be deprecated, and you start over
In the past it was a lot about installing tools and dealing with dependencies to get previous tool still working, compilation, etc. Nowadays this task is a routine, but time to time we still find a tool that is a pain to install.
Log in to answer this question.