text: user29: I’m trying to create a CRAM file that stores its path to the FASTA reference as a relative path, rather than an absolute path, so that I can move the files around. Unfortunately I can’t get this to work; I was expecting the following to work:
  ⟩⟩⟩ samtools view -C -T ../reference/ref.fa -o output.cram input.bam
  
  However, the resulting file contains an absolute path in its header:
  ⟩⟩⟩ samtools view -H output.cram
  …
  @SQ     SN:1    LN:249250621    M5:hash     UR:/absolute/path/to/data/mapped/../reference/ref.fa
  …
  
  As a result, I am unable to open the file via a different path mount that results in different absolute paths, and I can’t move the file (+ its reference) around, or to different machines.
  I know that I could set the REF_PATH environment variable or specify -T when reading the file but I would like to avoid this (the result file needs to be readable by IGV, launched by users who don’t know how to set environment variables).
  Is there a way of creating a CRAM file that stores a relative path to its reference?
  
  user2085: In your CRAM file, make all of the reference sequences present in the ./ directory. Then make a bash script to make relative links to your reference for whatever mount you are using at the time - ie ln -s TARGET LINK_NAME. 
  Now your CRAM is portable and you just have to tailor the local working dir to it.
  
original_text: 29: <p>I’m trying to create a CRAM file that stores its path to the FASTA reference as a relative path, rather than an absolute path, so that I can move the files around. Unfortunately I can’t get this to work; I was expecting the following to work:</p>
  
  <pre class="lang-bash prettyprint-override"><code>⟩⟩⟩ samtools view -C -T ../reference/ref.fa -o output.cram input.bam
  </code></pre>
  
  <p>However, the resulting file contains an absolute path in its header:</p>
  
  <pre class="lang-bash prettyprint-override"><code>⟩⟩⟩ samtools view -H output.cram
  …
  @SQ     SN:1    LN:249250621    M5:hash     UR:/absolute/path/to/data/mapped/../reference/ref.fa
  …
  </code></pre>
  
  <p>As a result, I am unable to open the file via a different path mount that results in different absolute paths, and I can’t move the file (+ its reference) around, or to different machines.</p>
  
  <p>I know that I could set the <code>REF_PATH</code> environment variable or specify <code>-T</code> when reading the file but I would like to avoid this (the result file needs to be readable by IGV, launched by users who don’t know how to set environment variables).</p>
  
  <p>Is there a way of creating a CRAM file that stores a <em>relative path</em> to its reference?</p>
   2085: <p>In your CRAM file, make all of the reference sequences present in the <code>./</code> directory. Then make a bash script to make relative links to your reference for whatever mount you are using at the time - ie <code>ln -s TARGET LINK_NAME</code>. </p>
  
  <p>Now your CRAM is portable and you just have to tailor the local working dir to it.</p>
  