text: user3552: edit explaining python tag
  I would still rather have a solution based on the RSVSim package in R, but while waiting for someone who might have an answer I wanted to look at other solutions as well.
  If a result like what metadata(sim) produces can be achieved in python as well, I can do it without RSVSim. I need especially the numbers given there, so I do NOT need "Copied BpSeqA BpSeqB_5prime BpSeqB_3prime". The numbers need to reflect the original position of insert into chr2, because I need to reflect this back to the original (unedited) chr2.
  end edit explaining pyton tag
  I tried using the BioConductor forums for asking this question Question on BioConductor. However I do not seem to get an answer there and after some help with other tools on this website, i thought I could also ask the question here, in the hope that someone knows something about it.
  I have a reference genome, and I need to put in some structural variations. It is really easy to do in RSVSim, and used it quite a lot already.
  However, when processing INS, I found out that it just copies a DNA seq from one part, and puts it somewhere else in the same DNA seq (Bascially a DUP then), or if you specify another an extra DNAseq, to cut from, It randomly cuts from either chr1 or chr2 and puts it in the other. This creates deletions in the DNA seq I want to investigate, which is not what I want.
  Does anyone know how to get this kind of result?
  width seq                                                                                                                           names               
  [1]    40 AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT    chr1
  [2]    40 GGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCCCCCCCCCC    chr2
  
  to this:
  width seq                                                                                                                           names               
  [1]    32 AAAAAAAAAAAAAAAATTTTTTTTTTTTTTTT                    chr1
  [2]    48 GGGGGGGGGGGGGGAAAATTTTGGGGGGCCCCCCCCCCCCCCCCCCCC    chr2
  
  And do it 30 times, randomly in the genome? (so take a seq from chr1 and put an insertion in chr2.
  I tried this and more already for days, and I just cannot figure it out. 
      library(RSVSim)    
  
      seq_random <- readDNAStringSet("/path/random.fasta", "fasta")
      seq_ref <- readDNAStringSet("/path/reference1MB.fasta", "fasta")
      genome2 = DNAStringSet(c(seq_random, seq_ref))
      names(genome2) = c("chr1","chr2")
  
      y <- c(30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 100, 100, 100, 100, 100, 500, 500, 500, 500, 500, 1000, 1000, 1000, 1000, 1000, 5000, 5000, 5000, 5000, 5000)
  
      length_seq = width(genome2[2])
      knownInsertion = GRanges(IRanges(0,length_seq), seqnames="chr2")
      knownInsertion = GRanges(IRanges(0,length_seq), seqnames="chr1", chrB="chr2", chrA="chr1")
      knownInsertion = GRanges(seqnames="chr1", chrB="chr2")
      sim = simulateSV(output='/folder/of/output/', genome=genome2, 
                       ins = 30, sizeIns=y, regionsIns=knownInsertion)
  
  EDIT for comment section
  The simple genome example:
  genome = DNAStringSet(c("AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT","GGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCCCCCCCCCC"))
  names(genome) = c("chr1","chr2")
  
  I believe I already tried those parameters. For example:
  knownInsertion = GRanges(IRanges(16,25), seqnames="chr1", chrB="chr2")
  sim = simulateSV(output=NA, genome=genome, ins = 1, regionsIns=knownInsertion, bpSeqSize=6, random=TRUE)
  
  results in:
  > sim
    A DNAStringSet instance of length 2
      width seq                                                                                                                           names               
  [1]    40 AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT                                                                                      chr1
  [2]    40 GGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCCCCCCCCCC                                                                                      chr2
  > metadata(sim)
  $insertions
           Name ChrA StartA EndA ChrB StartB EndB Size Copied BpSeqA BpSeqB_5prime BpSeqB_3prime
  1 insertion_1 chr1      3   12 chr1      6   15   10  FALSE  AAAAA        AAAAAA        AAAAAA
  
  so nothing happened at all.
  If I keep it simple, you get the result I mentioned before, where it is sometimes chr1->chr2 and sometimes chr2<-chr1
  sim = simulateSV(output=NA, genome=genome, ins = 3, sizeIns = 5, bpSeqSize=6, random=TRUE)
  
  > sim
    A DNAStringSet instance of length 2
      width seq                                                                                                                           names               
  [1]    40 AAAAAACCCCCAAAAATTTTTTTTTTTTTTAAAATTTTTT                                                                                      chr1
  [2]    40 GGGGGGGGAAAAAGGGGGGGGGGGGCCCCCCCCCCCCCCC                                                                                      chr2
  > metadata(sim)
  $insertions
           Name ChrA StartA EndA ChrB StartB EndB Size Copied BpSeqA BpSeqB_5prime BpSeqB_3prime
  1 insertion_1 chr1     17   21 chr1     36   40    5  FALSE AAATTT        TTTAAA        AATTTT
  2 insertion_2 chr1      1    5 chr2      9   13    5  FALSE               GGGAAA        AAAGGG
  3 insertion_3 chr2     33   37 chr1     12   16    5  FALSE CCCCCC        AAACCC        CCCAAA
  
  In this case I dont even know what happened exactly, because an uneven number of Ins, should make one of the chromosomes shorter or longer?
  Finally, when setting copy on (so no cut/paste)
  sim = simulateSV(output=NA, genome=genome, ins = 3, sizeIns = 5, bpSeqSize=6, random=TRUE, percCopiedIns=1.00)
  sim
  metadata(sim)
  
  > sim
    A DNAStringSet instance of length 2
      width seq                                                                                                                           names               
  [1]    50 AAAATTTTTAAAAAAAAAAAAAAAATTTTTTATTTTTTTTTTTTTTTTTT                                                                            chr1
  [2]    45 GGGGGGGGGGGGGGGGGAAAAAGGGCCCCCCCCCCCCCCCCCCCC                                                                                 chr2
  > metadata(sim)
  $insertions
           Name ChrA StartA EndA ChrB StartB EndB Size Copied BpSeqA BpSeqB_5prime BpSeqB_3prime
  1 insertion_1 chr1     36   40 chr1      5    9    5   TRUE               AAATTT        TTTAAA
  2 insertion_2 chr1     20   24 chr1     27   31    5   TRUE               TTTATT        TTTTTT
  3 insertion_3 chr1     13   17 chr2     18   22    5   TRUE               GGGAAA        AAAGGG
  
  Again. all the examples above have random chrA and chrB. Setting these specifically, only seems possible with the GRanges and IRanges, for which I tried tons of versions already.
  It should be a very simple thing according to the manual, but actually doing it doesn't seem to get the desired results, while my version of Insertions is just the normal one in my opinion? (why would you want to create extra DELS or DUPS while making insertions?).
  On their own support page, it is only possible to ask a question on the forums, but they never answer it (only look at it)
  
  user3552: Answer eventually found on the BioConductor post:
  https://support.bioconductor.org/p/114354/#114585
  It basically comes down to not using RSVSim, but other R packages.
  Final code snippit:
  genome = DNAStringSet(
    c(chr1 = "AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT",
      chr2 = "GGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCCCCCCCCCC"))
  
  sampleFromGenome <- function(genome, wd) {
    chrProb <- width(genome) / sum(width(genome))
    chr <- sample(names(genome), n, TRUE, prob = chrProb)
    start <- runif(n, 1, nchar(genome[chr]) - wd)
    GRanges(IRanges(start, width = wd), seqnames = chr)
  }
  
  n <- 2
  wd <- sample(5:10, n, TRUE)
  insertFrom <- sampleFromGenome(genome[1], wd)
  insertAt <- sampleFromGenome(genome[2], 0)
  
  #writeTable(insertFrom, stdout()) . # replace stdout with a file name
  
  sequence <- genome[insertFrom]
  at <- split(insertAt, seqnames(insertAt))[names(genome[2])]
  atSequence <- split(sequence, seqnames(insertAt))[names(genome[2])]
  
  replaceAt(genome[2], unname(ranges(at)), atSequence)
  
    A DNAStringSet instance of length 1
      width seq                                                                                                                           names               
  [1]    54 GGGGGGGGGGGGGGGGGGTTTTTTTTTGGCCCCCCCCCCCCTTTTTCCCCCCCC                                                                        chr2
  
  EDIT with RSVSim solution!
  Finally found a solution based on RSVSim
  genome = DNAStringSet(
    c(chr1 = "AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT",
      chr2 = "GGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCCCCCCCCCC"))
  
  length_seq_chr1 = width(genome[1]) - 10
  length_seq_chr2 = width(genome[2]) - 10
  sizes <- c(3,3,5,5)
  start_chr1 <- c("list", length(sizes))
  start_chr2 <- c("list", length(sizes))
  end_chr1 <- c("list", length(sizes))
  index = 1
  for(i in sizes){
    newstartchr1 <- sample(1:length_seq_chr1,1)
    newstartchr2 <- sample(1:length_seq_chr2,1)
    start_chr1[[index]] <- newstartchr1
    start_chr2[[index]] <- newstartchr2
    end_chr1[[index]] <- newstartchr1 + (i-1)
    index <- index + 1}
  start_chr1 <- as.integer(start_chr1)
  end_chr1 <- as.integer(end_chr1)
  start_chr2 <- as.integer(start_chr2)
  
  knownInsertion2 = GRanges(IRanges(c(start_chr1),c(end_chr1)),seqnames="chr1", chrB="chr2", startB=c(start_chr2), copied=TRUE)
  knownInsertion2
  
  sim = simulateSV(output=NA, genome=genome, regionsIns=knownInsertion2, bpSeqSize=5, random=FALSE, verbose=FALSE)
  sim
  metadata(sim)
  
  Gives as an result:
  > knownInsertion2
  GRanges object with 4 ranges and 3 metadata columns:
        seqnames    ranges strand |        chrB    startB    copied
           <Rle> <IRanges>  <Rle> | <character> <integer> <logical>
    [1]     chr1  [21, 24]      * |        chr2        30      TRUE
    [2]     chr1  [16, 19]      * |        chr2        21      TRUE
    [3]     chr1  [ 6, 11]      * |        chr2        10      TRUE
    [4]     chr1  [ 9, 14]      * |        chr2        27      TRUE
    -------
    seqinfo: 1 sequence from an unspecified genome; no seqlengths
  > 
  > sim = simulateSV(output=NA, genome=genome, regionsIns=knownInsertion2, bpSeqSize=5, random=FALSE, verbose=FALSE)
  > sim
    A DNAStringSet instance of length 2
      width seq                                                                                                                           names               
  [1]    40 AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT                                                                                      chr1
  [2]    60 GGGGGGGGGAAAAAAGGGGGGGGGGGAAAACCCCCCAAAAAACCCTTTTCCCCCCCCCCC                                                                  chr2
  > metadata(sim)
  $insertions
    Name ChrA StartA EndA ChrB StartB EndB Size Copied BpSeqA BpSeqB_5prime BpSeqB_3prime
  1    1 chr1     21   24 chr2     30   33    4   TRUE                 CCTT          TTCC
  2    2 chr1     16   19 chr2     21   24    4   TRUE                 GGAA          AACC
  3    3 chr1      6   11 chr2     10   15    6   TRUE                 GGAA          AAGG
  4    4 chr1      9   14 chr2     27   32    6   TRUE                 CCAA          AACC
  
  To make this customizable change:
  sizes <- c(whatever, numbers, you, like)
  output=NA (to a file path prefix to get a .csv file with the metadata)
  genome = DNAStringSet() To replace the sample sequence
  bpSeqSize = number (to change how many of the flanking region is shown in the metadata)
  
original_text: 3552: <h1>edit explaining python tag</h1>
  
  <p>I would still rather have a solution based on the RSVSim package in R, but while waiting for someone who might have an answer I wanted to look at other solutions as well.</p>
  
  <p>If a result like what metadata(sim) produces can be achieved in python as well, I can do it without RSVSim. I need especially the numbers given there, so I do NOT need "Copied BpSeqA BpSeqB_5prime BpSeqB_3prime". The numbers need to reflect the original position of insert into chr2, because I need to reflect this back to the original (unedited) chr2.</p>
  
  <h1>end edit explaining pyton tag</h1>
  
  <p>I tried using the BioConductor forums for asking this question <a href="https://support.bioconductor.org/p/114354/" rel="nofollow noreferrer" title="question on BioConductor">Question on BioConductor</a>. However I do not seem to get an answer there and after some help with other tools on this website, i thought I could also ask the question here, in the hope that someone knows something about it.</p>
  
  <p>I have a reference genome, and I need to put in some structural variations. It is really easy to do in RSVSim, and used it quite a lot already.</p>
  
  <p>However, when processing INS, I found out that it just copies a DNA seq from one part, and puts it somewhere else in the same DNA seq (Bascially a DUP then), or if you specify another an extra DNAseq, to cut from, It randomly cuts from either chr1 or chr2 and puts it in the other. This creates deletions in the DNA seq I want to investigate, which is not what I want.</p>
  
  <p>Does anyone know how to get this kind of result?</p>
  
  <pre><code>width seq                                                                                                                           names               
  [1]    40 AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT    chr1
  [2]    40 GGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCCCCCCCCCC    chr2
  </code></pre>
  
  <p>to this:</p>
  
  <pre><code>width seq                                                                                                                           names               
  [1]    32 AAAAAAAAAAAAAAAATTTTTTTTTTTTTTTT                    chr1
  [2]    48 GGGGGGGGGGGGGGAAAATTTTGGGGGGCCCCCCCCCCCCCCCCCCCC    chr2
  </code></pre>
  
  <p>And do it 30 times, randomly in the genome? (so take a seq from chr1 and put an insertion in chr2.</p>
  
  <p>I tried this and more already for days, and I just cannot figure it out. </p>
  
  <pre><code>    library(RSVSim)    
  
      seq_random &lt;- readDNAStringSet("/path/random.fasta", "fasta")
      seq_ref &lt;- readDNAStringSet("/path/reference1MB.fasta", "fasta")
      genome2 = DNAStringSet(c(seq_random, seq_ref))
      names(genome2) = c("chr1","chr2")
  
      y &lt;- c(30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 100, 100, 100, 100, 100, 500, 500, 500, 500, 500, 1000, 1000, 1000, 1000, 1000, 5000, 5000, 5000, 5000, 5000)
  
      length_seq = width(genome2[2])
      knownInsertion = GRanges(IRanges(0,length_seq), seqnames="chr2")
      knownInsertion = GRanges(IRanges(0,length_seq), seqnames="chr1", chrB="chr2", chrA="chr1")
      knownInsertion = GRanges(seqnames="chr1", chrB="chr2")
      sim = simulateSV(output='/folder/of/output/', genome=genome2, 
                       ins = 30, sizeIns=y, regionsIns=knownInsertion)
  </code></pre>
  
  <h2>EDIT for comment section</h2>
  
  <p>The simple genome example:</p>
  
  <pre><code>genome = DNAStringSet(c("AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT","GGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCCCCCCCCCC"))
  names(genome) = c("chr1","chr2")
  </code></pre>
  
  <p>I believe I already tried those parameters. For example:</p>
  
  <pre><code>knownInsertion = GRanges(IRanges(16,25), seqnames="chr1", chrB="chr2")
  sim = simulateSV(output=NA, genome=genome, ins = 1, regionsIns=knownInsertion, bpSeqSize=6, random=TRUE)
  </code></pre>
  
  <p>results in:</p>
  
  <pre><code>&gt; sim
    A DNAStringSet instance of length 2
      width seq                                                                                                                           names               
  [1]    40 AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT                                                                                      chr1
  [2]    40 GGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCCCCCCCCCC                                                                                      chr2
  &gt; metadata(sim)
  $insertions
           Name ChrA StartA EndA ChrB StartB EndB Size Copied BpSeqA BpSeqB_5prime BpSeqB_3prime
  1 insertion_1 chr1      3   12 chr1      6   15   10  FALSE  AAAAA        AAAAAA        AAAAAA
  </code></pre>
  
  <p>so nothing happened at all.
  If I keep it simple, you get the result I mentioned before, where it is sometimes chr1->chr2 and sometimes chr2&lt;-chr1</p>
  
  <pre><code>sim = simulateSV(output=NA, genome=genome, ins = 3, sizeIns = 5, bpSeqSize=6, random=TRUE)
  
  &gt; sim
    A DNAStringSet instance of length 2
      width seq                                                                                                                           names               
  [1]    40 AAAAAACCCCCAAAAATTTTTTTTTTTTTTAAAATTTTTT                                                                                      chr1
  [2]    40 GGGGGGGGAAAAAGGGGGGGGGGGGCCCCCCCCCCCCCCC                                                                                      chr2
  &gt; metadata(sim)
  $insertions
           Name ChrA StartA EndA ChrB StartB EndB Size Copied BpSeqA BpSeqB_5prime BpSeqB_3prime
  1 insertion_1 chr1     17   21 chr1     36   40    5  FALSE AAATTT        TTTAAA        AATTTT
  2 insertion_2 chr1      1    5 chr2      9   13    5  FALSE               GGGAAA        AAAGGG
  3 insertion_3 chr2     33   37 chr1     12   16    5  FALSE CCCCCC        AAACCC        CCCAAA
  </code></pre>
  
  <p>In this case I dont even know what happened exactly, because an uneven number of Ins, should make one of the chromosomes shorter or longer?</p>
  
  <p>Finally, when setting copy on (so no cut/paste)</p>
  
  <pre><code>sim = simulateSV(output=NA, genome=genome, ins = 3, sizeIns = 5, bpSeqSize=6, random=TRUE, percCopiedIns=1.00)
  sim
  metadata(sim)
  
  &gt; sim
    A DNAStringSet instance of length 2
      width seq                                                                                                                           names               
  [1]    50 AAAATTTTTAAAAAAAAAAAAAAAATTTTTTATTTTTTTTTTTTTTTTTT                                                                            chr1
  [2]    45 GGGGGGGGGGGGGGGGGAAAAAGGGCCCCCCCCCCCCCCCCCCCC                                                                                 chr2
  &gt; metadata(sim)
  $insertions
           Name ChrA StartA EndA ChrB StartB EndB Size Copied BpSeqA BpSeqB_5prime BpSeqB_3prime
  1 insertion_1 chr1     36   40 chr1      5    9    5   TRUE               AAATTT        TTTAAA
  2 insertion_2 chr1     20   24 chr1     27   31    5   TRUE               TTTATT        TTTTTT
  3 insertion_3 chr1     13   17 chr2     18   22    5   TRUE               GGGAAA        AAAGGG
  </code></pre>
  
  <p>Again. all the examples above have random chrA and chrB. Setting these specifically, only seems possible with the GRanges and IRanges, for which I tried tons of versions already.</p>
  
  <p>It should be a very simple thing according to the manual, but actually doing it doesn't seem to get the desired results, while my version of Insertions is just the normal one in my opinion? (why would you want to create extra DELS or DUPS while making insertions?).</p>
  
  <p>On their own support page, it is only possible to ask a question on the forums, but they never answer it (only look at it)</p>
   3552: <p>Answer eventually found on the BioConductor post:
  <a href="https://support.bioconductor.org/p/114354/#114585" rel="nofollow noreferrer">https://support.bioconductor.org/p/114354/#114585</a></p>
  
  <p>It basically comes down to not using RSVSim, but other R packages.</p>
  
  <p>Final code snippit:</p>
  
  <pre><code>genome = DNAStringSet(
    c(chr1 = "AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT",
      chr2 = "GGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCCCCCCCCCC"))
  
  sampleFromGenome &lt;- function(genome, wd) {
    chrProb &lt;- width(genome) / sum(width(genome))
    chr &lt;- sample(names(genome), n, TRUE, prob = chrProb)
    start &lt;- runif(n, 1, nchar(genome[chr]) - wd)
    GRanges(IRanges(start, width = wd), seqnames = chr)
  }
  
  n &lt;- 2
  wd &lt;- sample(5:10, n, TRUE)
  insertFrom &lt;- sampleFromGenome(genome[1], wd)
  insertAt &lt;- sampleFromGenome(genome[2], 0)
  
  #writeTable(insertFrom, stdout()) . # replace stdout with a file name
  
  sequence &lt;- genome[insertFrom]
  at &lt;- split(insertAt, seqnames(insertAt))[names(genome[2])]
  atSequence &lt;- split(sequence, seqnames(insertAt))[names(genome[2])]
  
  replaceAt(genome[2], unname(ranges(at)), atSequence)
  
    A DNAStringSet instance of length 1
      width seq                                                                                                                           names               
  [1]    54 GGGGGGGGGGGGGGGGGGTTTTTTTTTGGCCCCCCCCCCCCTTTTTCCCCCCCC                                                                        chr2
  </code></pre>
  
  <h1>EDIT with RSVSim solution!</h1>
  
  <p>Finally found a solution based on RSVSim</p>
  
  <pre><code>genome = DNAStringSet(
    c(chr1 = "AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT",
      chr2 = "GGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCCCCCCCCCC"))
  
  length_seq_chr1 = width(genome[1]) - 10
  length_seq_chr2 = width(genome[2]) - 10
  sizes &lt;- c(3,3,5,5)
  start_chr1 &lt;- c("list", length(sizes))
  start_chr2 &lt;- c("list", length(sizes))
  end_chr1 &lt;- c("list", length(sizes))
  index = 1
  for(i in sizes){
    newstartchr1 &lt;- sample(1:length_seq_chr1,1)
    newstartchr2 &lt;- sample(1:length_seq_chr2,1)
    start_chr1[[index]] &lt;- newstartchr1
    start_chr2[[index]] &lt;- newstartchr2
    end_chr1[[index]] &lt;- newstartchr1 + (i-1)
    index &lt;- index + 1}
  start_chr1 &lt;- as.integer(start_chr1)
  end_chr1 &lt;- as.integer(end_chr1)
  start_chr2 &lt;- as.integer(start_chr2)
  
  knownInsertion2 = GRanges(IRanges(c(start_chr1),c(end_chr1)),seqnames="chr1", chrB="chr2", startB=c(start_chr2), copied=TRUE)
  knownInsertion2
  
  sim = simulateSV(output=NA, genome=genome, regionsIns=knownInsertion2, bpSeqSize=5, random=FALSE, verbose=FALSE)
  sim
  metadata(sim)
  </code></pre>
  
  <p>Gives as an result:</p>
  
  <pre><code>&gt; knownInsertion2
  GRanges object with 4 ranges and 3 metadata columns:
        seqnames    ranges strand |        chrB    startB    copied
           &lt;Rle&gt; &lt;IRanges&gt;  &lt;Rle&gt; | &lt;character&gt; &lt;integer&gt; &lt;logical&gt;
    [1]     chr1  [21, 24]      * |        chr2        30      TRUE
    [2]     chr1  [16, 19]      * |        chr2        21      TRUE
    [3]     chr1  [ 6, 11]      * |        chr2        10      TRUE
    [4]     chr1  [ 9, 14]      * |        chr2        27      TRUE
    -------
    seqinfo: 1 sequence from an unspecified genome; no seqlengths
  &gt; 
  &gt; sim = simulateSV(output=NA, genome=genome, regionsIns=knownInsertion2, bpSeqSize=5, random=FALSE, verbose=FALSE)
  &gt; sim
    A DNAStringSet instance of length 2
      width seq                                                                                                                           names               
  [1]    40 AAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTTTTTTT                                                                                      chr1
  [2]    60 GGGGGGGGGAAAAAAGGGGGGGGGGGAAAACCCCCCAAAAAACCCTTTTCCCCCCCCCCC                                                                  chr2
  &gt; metadata(sim)
  $insertions
    Name ChrA StartA EndA ChrB StartB EndB Size Copied BpSeqA BpSeqB_5prime BpSeqB_3prime
  1    1 chr1     21   24 chr2     30   33    4   TRUE                 CCTT          TTCC
  2    2 chr1     16   19 chr2     21   24    4   TRUE                 GGAA          AACC
  3    3 chr1      6   11 chr2     10   15    6   TRUE                 GGAA          AAGG
  4    4 chr1      9   14 chr2     27   32    6   TRUE                 CCAA          AACC
  </code></pre>
  
  <p>To make this customizable change:</p>
  
  <p>sizes &lt;- c(whatever, numbers, you, like)</p>
  
  <p>output=NA (to a file path prefix to get a .csv file with the metadata)</p>
  
  <p>genome = DNAStringSet() To replace the sample sequence</p>
  
  <p>bpSeqSize = number (to change how many of the flanking region is shown in the metadata)</p>
  