Entering edit mode
3.9 years ago
star ▴ 330
I have two files (A ~ 17 MB and B~ 8GB) that I like to intersect them using Bedtools but I faced with error, I want to know is there any solution for it? Also, I guess I have enough memory space.
intersectBed -a A.bed -b B.bed -wa -wb > out.bed
terminate called after throwing an instance of 'std::bad_alloc'
Aborted (core dumped)
well I guess you don't. Try
-sortedand find out
I did it and get
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_allocthis time
I agree with Carambakaracho that the error is likely due to the fact that the process is filling up your RAM. Try and give a look at what happens with the RAM while you are executing the task. Another good try would be to repeat the task with a substantially reduced set of data (e.g. the first 2000 lines of B file) and see what happens. If it's just a RAM issue I think you might subset the second file in two/four chunks and do the work separately and then merge the files: I don't see downside in doing this.
Thanks for your reply, It is working when I am getting a subset of B file. So I will split that file to 2-3 files then run command.
std::bad_allocis the C++ error code for when a new operator tries to allocate something, but fails. As C++ cannot dynamically allocate memory, the lack of memory is the most common cause.
As of now, you didn't disclose anything on the machine you're working on, so I guess the most common cause, too. If your working on a HPC and allocated 1TB RAM, something else went wrong. For a start, Fabio Marroni gave good troubleshooting advice.
In my case, I was doing something different but got the same error (std::bad_alloc), and the memory was the problem - thanks!