0
$\begingroup$

I want to create custom tracks from theseenter image description here files

I can add the line : track type=narrowPeak name=“narrowPeak” manually by opening it with text editor: track type=narrowPeak name=“narrowPeak” enter image description here but I wonder if there is no simple way to do it with code- to open all files that end with bed and add them this line. Didnt find this option in bed tools, If it is possible to add the name extracting it from the file name it would be amazing.

Many thanks

$\endgroup$

1 Answer 1

1
$\begingroup$

I don't think you need to go to R or Python to do that. In bash

set -euxo pipefail
for f in *.bed
do
  bn="$(basename ${f})"
  on="${bn%%.bed}_with_header.bed"
  echo 'track type=narrowPeak name="narrowPeak"' > "${on}"
  cat "${f}" >> "${on}"
done

EDIT: I just read you want to set the name based on the filename.

EDIT2: And also to add an arbitrary directory

set -euxo pipefail

INDIR="/path/to/bedfiles"

for f in $(find "${INDIR}" -name "*.bed")
do
  bn=$(basename "${f}")
  on="${bn%%.bed}_with_header.bed"
  dn=$(dirname "${f}")
  echo "track type=narrowPeak name=\"${bn}\"" > "${dn}"/"${on}"
  cat "${f}" >> "${dn}"/"${on}"
done
$\endgroup$
4
  • $\begingroup$ Thanks, never worked in bash before. How can I set the origin directory? In addition, can you please if it's not too complicated to add a short comment for each line so it will be easier for me to google it? $\endgroup$ Commented Oct 26, 2020 at 12:26
  • $\begingroup$ You can change the working directory of your terminal with cd <dir>. You can also add the directory to the for-loop for f in <path_to_dir>/*.bed $\endgroup$ Commented Oct 26, 2020 at 12:29
  • $\begingroup$ I added this line : INDIR=/MacHD/Users/walkerlab/Documents/ChIPSeq”, kept everything else the same and it claims that the folder doesn't exist ++ find $'/MacHD/Users/walkerlab/Documents/ChIPSeq?\200\235' -name '*.bed' find: /MacHD/Users/walkerlab/Documents/ChIPSeq”: No such file or directory $\endgroup$ Commented Oct 26, 2020 at 13:08
  • $\begingroup$ It looks like there is some byte sequence in your path: ChIPSeq?\200\235. Can you check for non-ASCII characters there? $\endgroup$ Commented Oct 26, 2020 at 13:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.