-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfaq.html
890 lines (858 loc) · 61.5 KB
/
faq.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="images/rnb_favicon.ico">
<title>RnBeads</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/small-business.css" rel="stylesheet">
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html">
<img src="images/rnb_logo_145x50.png" alt="">
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li>
<a href="index.html">About</a>
</li>
<li>
<a href="installation.html">Installation</a>
</li>
<li>
<a href="tutorial.html">Tutorials</a>
</li>
<li>
<a href="examples.html">Examples</a>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Resources
<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="methylomes.html">Methylome Resource</a></li>
<li><a href="regions.html">Region Sets</a></li>
<li><a href="ageprediction.html">Age Prediction</a></li>
</ul>
</li>
<li>
<a href="references.html">References</a>
</li>
<li class="active">
<a href="faq.html">FAQ</a>
</li>
<!-- <li>
<a href="webservice.html">Webservice</a>
</li> -->
<li>
<a href="contact.html">Contact</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- Page Content -->
<div class="container">
<!-- Page Heading/Breadcrumbs -->
<h1 class="mt-4 mb-3">Frequently Asked Questions</h1>
<!--
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="index.html">Home</a>
</li>
<li class="breadcrumb-item active">FAQ</li>
</ol>
-->
<h2>General Questions</h2>
<div class="panel-group" id="accordion_general">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_low_resources">
I am running RnBeads on a computer with limited resources. What can I do to reduce the memory consumption by RnBeads?
</a>
</h4>
</div>
<div id="a_low_resources" class="panel-collapse collapse">
<div class="panel-body">
First, try to run RnBeads on a single core and NOT in parallel. Additionally, there are several option settings that can be used to reduce the resource requirements. These option settings apply to different (sub)modules:</p>
<p class="a"><code>
<span style="color:#008000"># Disable greedycut (filtering)</span><br />
rnb.options("filtering.greedycut"=FALSE)<br />
<span style="color:#008000"># Disable intersample variation plots (exploratory analysis)</span><br />
rnb.options("exploratory.intersample"=FALSE)<br />
<span style="color:#008000"># Reduce the subsampling number for estimating density plots</span><br />
rnb.options("distribution.subsample"=100000)<br />
<span style="color:#008000"># Disable regional methylation profiling (exploratory analysis)</span><br />
rnb.options("exploratory.region.profiles"=NULL)<br />
<span style="color:#008000"># Disable chromosome coverage plots (QC, sequencing data only)</span><br />
rnb.options("qc.coverage.plots"=FALSE)<br />
</code>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_galaxy">
Can I start RnBeads analysis with Galaxy on the Cloud?
</a>
</h4>
</div>
<div id="a_galaxy" class="panel-collapse collapse">
<div class="panel-body">
Yes, you can. RnBeads has a <a href="http://toolshed.g2.bx.psu.edu/view/pavlo-lutsik/rnbeads">wrapper script</a> for integration with Galaxy, accessible from the <a href="http://toolshed.g2.bx.psu.edu/">main Galaxy Tool Shed</a> (http://toolshed.g2.bx.psu.edu/view/pavlo-lutsik/rnbeads). In order to have it running the on a custom Galaxy instance on the Amazon cloud, follow the steps provided below. <b>Warning: Following the steps results in additional costs. The exact amount depends on the selected cloud configuration and Amazon Web Services pricing at the time of usage.</b>
<ol>
<li>Subscribe for Amazon Web Services and establish a custom Galaxy instance on the clound using the Cloud Launch interface as described here: <a href="http://wiki.galaxyproject.org/CloudMan">wiki.galaxyproject.org/CloudMan</a></li>
<li>Log in to CloudMan (it becomes accessible upon successful completion of Step 1). Give it some time to start the Galaxy instance and click the button <i>Access Galaxy</i>.</li>
<li>Go to the menu item <i>User</i> and register within your Galaxy instance.</li>
<li>Go back to the CloudMan interface, acess the <i>Admin</i> interface (a link on the top-right), and add an yourself as an administrator user.</li>
<li>Go to the Galaxy instance and refresh the page until you get a new <i>Admin</i> menu item.</li>
<li>Proceed to the Galaxy administrator interface and select the task <i>Search and browse tool sheds</i>.</li>
<li>Click on <i>Galaxy main toolshed</i>, select <i>Browse for valid repositories</i> and find the wrapper <b>rnbeads</b> using the search field located at the top of the newly opened page.</li>
<li>Click on the button with the wrapper name and select <i>Preview and install</i>.</li>
<li>Click <i>Install to Galaxy</i> on the top-right.</li>
<li>Check <i>Handle tool dependencies</i>, select the <i>Statistics</i> tool panel section and click <i>Install</i>.</li>
<li>Give Galaxy some time to install the tool, then go back to the <i>Analyze Data</i> interface. <b>RnBeads</b> should become available in the Tool panel, just type <i>RnBeads</i> in the search field. Click on the tool to open its Galaxy interface.</li>
<li>You can test functionality of the tool by starting a small analysis of a public data set. Select <i>Gene Expression Omnibus series</i> in the data type field and specify <i>GSE38268</i> as the GEO series. The series contains only 6 Infinium 450k samples, so the analysis should not take more than an hour. After the completion you will get a link to the analysis report, displayed directly in the data display window.</li>
</ol>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_assemblies">
Which genome assemblies does RnBeads support? Can I include a new one?
</a>
</h4>
</div>
<div id="a_assemblies" class="panel-collapse collapse">
<div class="panel-body">
RnBeads supports the human (hg19, hg38), mouse (mm9 and mm10) and rat (rn5) genomes. If you would like to analyze a different genome, you need to create a new annotation package. Please note that this can be a daunting task if you have very little experience with R or Bioconductor. We developed a dedicated project on GitHub - <a href="https://github.com/epigen/RnBeadsAnnotationCreator">RnBeadsAnnotationCreator</a> - to assist you in adding support for a new assembly to RnBeads. RnBeadsAnnotationCreator is an R package itself. It contains routines that automatize the process of annotation package creation. Its documentation explains how RnBeads annotation packages are structured and includes a tutorial on creating an annotation package for the Zebrafish genome.
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_libraries">
Which libraries and tools does RnBeads rely on?
</a>
</h4>
</div>
<div id="a_libraries" class="panel-collapse collapse">
<div class="panel-body">
RnBeads utilizes many established R packages for data loading and manipulation. Examples for such include the Bioconductor packages <i>methylumi</i>, <i>minfi</i>, <i>RPMM</i>, <i>ggbio</i>, <i>GEOquery</i>, <i>GOstats</i> and others. RnBeads also includes code from the Google Code project <a href="http://code.google.com/p/bmiq/">Beta Mixture Quantile Model</a>. Parallelization is implemented using the packages <i>foreach</i> and <i>doParallel</i>. Most of the report figures are created using the <i>ggplot2</i> package. GO enrichment analysis results are visualized with the help of the <i>wordcloud</i> package. See the output of the following command for a full list of the libraries required by RnBeads:</p>
<p class="a"><code>tools::dependsOnPkgs(<span style="color:#000080">"RnBeads"</span>)</code></p>
<p class="a">The web service submission form uses the cross-browser tooltips library by <a href="http://www.walterzorn.de">Walter Zorn</a>. The library is distributed under the <a href="http://www.gnu.org/copyleft/lesser.html">GNU Lesser General Public License</a>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_default_options">
My default RnBeads run generated slightly different results in comparison to an older version of RnBeads. What happened?
</a>
</h4>
</div>
<div id="a_default_options" class="panel-collapse collapse">
<div class="panel-body">
<p>In order to keep up-to-date with the most recent developments in Computational Epigenomics, we continuingly update the RnBeads default option setting. In software version 2.9.3, we changed the following defaults:</p>
<table style="width:100%">
<tr>
<th><b>Option name</b></th>
<th><b>Old default</b></th>
<th><b>New default</b></th>
</tr>
<tr>
<td><code>import.bed.style</code></td>
<td><code>"BisSNP"</code></td>
<td><code>"bismarkCov"</code></td>
</tr>
<tr>
<td><code>normalization.background.method</code></td>
<td><code>"methylumi.noob"</code></td>
<td><code>"none"</code></td>
</tr>
<tr>
<td><code>filtering.snp</code></td>
<td><code>"3"</code></td>
<td><code>"any"</code></td>
</tr>
<tr>
<td><code>filtering.cross.reactive</code></td>
<td><code>FALSE</code></td>
<td><code>TRUE</code></td>
</tr>
<tr>
<td><code>filtering.sex.chromosomes.removal</code></td>
<td><code>FALSE</code></td>
<td><code>TRUE</code></td>
</tr>
<tr>
<td><code>filtering.missing.value.quantile</code></td>
<td><code>1</code></td>
<td><code>0.5</code></td>
</tr>
<tr>
<td><code>exploratory.intersample</code></td>
<td><code>NULL</code></td>
<td><code>FALSE</code></td>
</tr>
<tr>
<td><code>exploratory.deviation.plots</code></td>
<td><code>NULL</code></td>
<td><code>FALSE</code></td>
</tr>
<tr>
<td><code>exploratory.region.profiles</code></td>
<td><code>NULL</code></td>
<td><code>""</code></td>
</tr>
<tr>
<td><code>differential.adjustment.sva</code></td>
<td><code>TRUE</code></td>
<td><code>FALSE</code></td>
</tr>
<tr>
<td><code>differential.adjustment.celltype</code></td>
<td><code>TRUE</code></td>
<td><code>FALSE</code></td>
</tr>
<tr>
<td><code>export.to.bed</code></td>
<td><code>TRUE</code></td>
<td><code>FALSE</code></td>
</tr>
<tr>
<td><code>export.to.trackhub</code></td>
<td><code>c("bigBed","bigWig")</code></td>
<td><code>NULL</code></td>
</tr>
</table>
</div>
</div>
</div>
</div>
<h2>Installation</h2>
<div class="panel-group" id="accordion_installation">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_install_binsource">
When installing RnBeads using the install script, I get asked: "There are binary versions available but the source versions are later [...] Do you want to install from sources the package which needs compilation?" What should I answer?
</a>
</h4>
</div>
<div id="a_install_binsource" class="panel-collapse collapse">
<div class="panel-body">
No:
<br />
<code>Do you want to install from sources the package which needs compilation? y/n: n</code><br />
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_install_oldpkg">
When installing RnBeads using the install script, I get asked: "Old packages: [...] Update all/some/none?" What should I answer?
</a>
</h4>
</div>
<div id="a_install_oldpkg" class="panel-collapse collapse">
<div class="panel-body">
No:
<br />
<code>Update all/some/none? [a/s/n]: n</code><br />
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_ghostscript">
I get an error 'cannot locate Ghostscript / gswin32c'. How can I fix this?
</a>
</h4>
</div>
<div id="a_ghostscript" class="panel-collapse collapse">
<div class="panel-body">
The R platform uses Ghostscript for convertion of PDF files to PNG images. The error you see shows that R cannot locate the Ghostscript executable on your machine. First, make sure Ghostscript is installed. You can download it from <a href="http://www.ghostscript.com">Ghostscript's official web site</a> if necessary. After that, one solution is to add the Ghostscript's installation directory to the system path. Here we provide a brief description of steps to follow in order to achieve this on Windows operating systems:</p>
<p class="a"><br />
1. Open the Advanced system settings. In Windows 7, for example, it can be reached through: Control Panel > System and Security > System > Advanced System Settings.<br />
2. You see the "System Properties" dialog, open the "Advanced" tab. Click the button "Environment Variables..." to update the search path.<br />
3. Locate the environment variable "Path" (it doesn't matter if it is the user or the system variables, as long as you are the user who starts R). Select it, click on Edit, and prepend the location of the Ghostscript executable, followed by a semicolon. The text you need to add is usually similar to <code>C:\Program Files\gs\gs9.15\bin;</code><br />
4. After starting a new R session, Ghostscript should be accessible from R. If it still cannot be located, you need to check the corresponding environment variable. In an R session, the command <code>Sys.getenv()["R_GSCMD"]</code> shows the contents of the dedicated Ghostcript variable. If the variable does not exists or points to the wrong executable file, you can set it to the full path of the Ghostscript executable. This is achieved by editing or creating the file <code>Renviron.site</code> in the <code>etc</code> subdirectory of your R installation. Make sure the file contents includes the line <code>R_GSCMD=C:\Program Files\gs\gs9.15\bin\gswin64c.exe</code> (assuming Ghostscript is located in <code>C:\Program Files\gs\gs9.15</code> and you are using the 64-bit version of R). For more information, please check the R documentation on getting and setting environment variables.
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_mac_ghostscript">
How do I install Ghostscript on a Mac?
</a>
</h4>
</div>
<div id="a_mac_ghostscript" class="panel-collapse collapse">
<div class="panel-body">
You can download ghostscript for mac from this <a href="http://pages.uoregon.edu/koch/">website</a>. Just obtain on the the most recent version of Ghostscript (named Ghostscript 9.**). Then open the package file that you just downloaded and follow the installation instructions.
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_winzip">
I receive a warning that I need to install zip on my windows machine. What can I do?
</a>
</h4>
</div>
<div id="a_winzip" class="panel-collapse collapse">
<div class="panel-body">
In order to be able to save disk-backed RnBSet objects on Windows, Zip archive creating utility should be installed and properly configured. There are multiple ways to get Zip utility installed on your Windows system. For instance, Zip is available as a part of the Rtools distribution, which is a collection of packages for R development on Windows (<a href="http://cran.r-project.org/bin/windows/Rtools/">link</a>). For the minimal install at the "Select Components" stage of the Rtools installation choose "Custom installation" and check only the "R toolset" item below. In the "Additional Tasks" dialogue, which appears a couple of steps later, make sure that both available items for "Edit the system PATH" are checked ("Current value" and "Save version number XXX in registry"). To test the installation start the Windows terminal ("Start" > "Run" > "CMD") and try executing command "zip" in the command line. Given the installation and configuration were successful you should see the Zip version and brief usage instructions.<br />
In some cases, the environment variables also need to be set in order for R to locate and use the installed zip utility. One way to do this is to create or edit the file <code>Renviron.site</code> in the <code>etc</code> subdirectory of your R installation. Make sure the file contents includes the lines:<br />
<code>R_ZIPCMD=zip</code><br />
<code>R_UNZIPCMD=unzip</code><br />
For more information, please check the R documentation on getting and setting environment variables.
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_general" href="#a_linux">
RnBeads installation script fails on my brand new Linux system. What is wrong?
</a>
</h4>
</div>
<div id="a_linux" class="panel-collapse collapse">
<div class="panel-body">
RnBeads is a rich package, which also has a lot of dependencies. Upon RnBeads installation into a "clean" R environment, more than a hundred of other R packages will be installed. Many of them have dependencies on the operating system level, however, most of these dependencies are simultaneously defined as dependencies of R itself and will be installed together with it. There are some exceptions, though. As a rule dependencies of RnBeads will <b>require</b> the following libraries to be installed:<br /><br />
<ll>
<li><code>libmysql</code> and <code>libmysql-devel</code>. NB. These packages are aliased as <code>mariadb</code> on RedHat-derived Linux distributions (RHEL, CentOS, Fedora)</li>
<li><code>libxml2</code> and <code>libxml2-devel</code></li>
</ll>
<br />
Furthermore, package GLAD, used for CNV calling, will require Gnu Scientific Library, known on many Linux systems as <code>gsl</code> package.<br />
As an example, on RedHat derivatives one can install all the extra dependencies with one command:<br/>
<code>yum install mariadb mariadb-devel libxml2 libxml2-devel gsl</code> <br/>
Note that the installation will normally require administrator a.k.a. "root" access rights. In most cases one can temporarily get them by addind <code>sudo</code> to the beginning of the above command. <br/> The installation command might be different on other Linux distributions, so please, refer to their respective documentation and package repositories.
In case of further problems you should contact the system's administrator of your department, or simply a more experienced Linux user.
</div>
</div>
</div>
</div>
<h2>Compatibility</h2>
<div class="panel-group" id="accordion_compatibility">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_compatibility" href="#a_options_99">
Why are some analysis options not recognized in RnBeads 0.99.15 and later?
</a>
</h4>
</div>
<div id="a_options_99" class="panel-collapse collapse">
<div class="panel-body">
In RnBeads 0.99.15, we reorganized the analysis pipeline. We introduced the new modules <i>Preprocessing</i> and <i>Exploratory Analysis</i>, and renamed the modules <i>Loading</i> to <i>Import</i>, <i>Data Export</i> to <i>Tracks and Tables</i>, and <i>Annotation Inference</i> to <i>Covariate Inference</i>. As a result, we renamed some of the analysis options to match the new modules. The table below lists the renamed options.</p>
<table class="table table-striped">
<thead>
<tr><th>Old Option</th><th>New Option</th></tr>
</thead>
<tbody>
<tr>
<td>loading</td><td>import</td>
</tr>
<tr>
<td>loading.default.data.type</td><td>import.default.data.type</td>
</tr>
<tr>
<td>loading.table.separator</td><td>import.table.separator</td>
</tr>
<tr>
<td>loading.bed.style</td><td>import.bed.style</td>
</tr>
<tr>
<td>loading.bed.columns</td><td>import.bed.columns</td>
</tr>
<tr>
<td>loading.bed.frame.shift</td><td>import.bed.frame.shift</td>
</tr>
<tr>
<td>loading.bed.test</td><td>import.bed.test</td>
</tr>
<tr>
<td>loading.bed.test.only</td><td>import.bed.test.only</td>
</tr>
<tr>
<td>batch</td><td>exploratory</td>
</tr>
<tr>
<td>batch.dreduction.columns</td><td>exploratory.columns</td>
</tr>
<tr>
<td>batch.top.dimensions</td><td>exploratory.top.dimensions</td>
</tr>
<tr>
<td>batch.principal.components</td><td>exploratory.principal.components</td>
</tr>
<tr>
<td>batch.correlation.columns</td><td>exploratory.columns</td>
</tr>
<tr>
<td>batch.correlation.pvalue.threshold</td><td>exploratory.correlation.pvalue.threshold</td>
</tr>
<tr>
<td>batch.correlation.permutations</td><td>exploratory.correlation.permutations</td>
</tr>
<tr>
<td>batch.correlation.qc</td><td>exploratory.correlation.qc</td>
</tr>
<tr>
<td>profiles</td><td>exploratory</td>
</tr>
<tr>
<td>profiles.beta.distribution</td><td>exploratory.beta.distribution</td>
</tr>
<tr>
<td>profiles.intersample</td><td>exploratory.intersample</td>
</tr>
<tr>
<td>profiles.deviation.plots</td><td>exploratory.deviation.plots</td>
</tr>
<tr>
<td>profiles.columns</td><td>exploratory.columns</td>
</tr>
<tr>
<td>profiles.clustering</td><td>exploratory.clustering</td>
</tr>
<tr>
<td>profiles.clustering.top.sites</td><td>exploratory.clustering.top.sites</td>
</tr>
<tr>
<td>region.profiles.types</td><td>exploratory.region.profiles</td>
</tr>
<tr>
<td>export.to.ucsc</td><td>export.to.trackhub</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_compatibility" href="#a_functions_99">
Why are some function names not recognized in RnBeads 0.99.15 and later?
</a>
</h4>
</div>
<div id="a_functions_99" class="panel-collapse collapse">
<div class="panel-body">
In RnBeads 0.99.15, we reorganized the analysis pipeline; as described in the answer to the previous question. As a result, we renamed some of the exported functions to match the new modules. The table below lists the renamed functions.</p>
<table class="table table-striped">
<thead>
<tr><th>Old Function</th><th>New Function</th></tr>
</thead>
<tbody>
<tr>
<td>rnb.execute.loading</td><td>rnb.execute.import</td>
</tr>
<tr>
<td>rnb.execute.export</td><td>rnb.execute.tnt</td>
</tr>
<tr>
<td>rnb.export.to.ucsc</td><td>rnb.export.to.trackhub</td>
</tr>
<tr>
<td>rnb.run.loading</td><td>rnb.run.import</td>
</tr>
<tr>
<td>rnb.run.batch</td><td>rnb.run.exploratory</td>
</tr>
<tr>
<td>rnb.run.profiles</td><td>rnb.run.exploratory</td>
</tr>
<tr>
<td>rnb.run.export</td><td>rnb.run.tnt</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<h2>Analysis Pipeline</h2>
<div class="panel-group" id="accordion_pipeline">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_pipeline" href="#a_bed">
I want to load my data using <code>bed</code> files. What formats does <b>RnBeads</b> support?
</a>
</h4>
</div>
<div id="a_bed" class="panel-collapse collapse">
<div class="panel-body">
In principle, <b>RnBeads</b> can process any tabular file format that has exactly one row for each CpG which includes genomic coordinates (chromosome, start and end), and additionally information from which methylation levels can be deduced. For more details see the package's <a href="http://bioconductor.org/packages/release/bioc/vignettes/RnBeads/inst/doc/RnBeads.pdf">vignette</a>. However, there are many uncertainties and parameters that have to be taken into account when specifying the exact format of the methylation data files. We thus recommend using one of the packages presets which can be set using the <code>loading.bed.style</code> option. Here is an overview of the currently implementd presets:
</p>
<p class="a"><b><code>EPP</code></b><br />
<code>bed</code> files in the format as output files from the Epigenome Processing Pipeline developed by Fabian Müller and Christoph Bock A tab-separated file contains: the chromosome name, start coordinate, end coordinate, methylation value and coverage as a string ('#methylated_read/#total_reads'), some score, the strand, and additional information not taken into account by <b>RnBeads</b>. The file should not contain a header line. Coordinates are 0-based, spanning the first coordinate in a site and the first coordinate outside the site (i.e. end-start = 2 for a CpG). Here are some example lines (genome assembly mm9):
<p class="a"><code>
chr1 3010957 3010959 '27/27' 1000 +<br />
chr1 3010971 3010973 '10/20' 500 +<br />
chr1 3011025 3011027 '57/70' 814 -<br />
...<br />
</p></code>
</p>
<p class="a"><b><code>BisSNP</code></b><br />
<code>bed</code> files are assumed to have been generated by the methylation calling tool <a href="http://epigenome.usc.edu/publicationdata/bissnp2011/"><code>BisSNP</code></a>. A tab-separated file contains the chromosome name, start coordinate, end coordinate, methylation value in percent, the coverage, the strand, and additional information not taken into account by <b>RnBeads</b>. The file should contain a header line. Coordinates are 0-based, spanning the first and the last coordinate in a site (i.e. end-start = 1 for a CpG). Sites on the - strand are shifted by +1. Here are some example lines (genome assembly hg19):
<p class="a"><code>
track name=file_sorted.realign.recal.cpg.filtered.sort.CG.bed type=bedDetail description="CG methylation<br />
chr1 10496 10497 79.69 64 + 10496 10497 180,60,0 0 0<br />
chr1 10524 10525 90.62 64 + 10524 10525 210,0,0 0 0<br />
chr1 864802 864803 58.70 46 + 864802 864803 120,120,0 0 5<br />
chr1 864803 864804 50.00 4 - 864803 864804 90,150,0 1 45<br />
...
</p></code>
</p>
<p class="a"><b><code>bismarkCov</code></b><br />
<code>cov</code> files are assumed to have the format as defined by Bismark's coverage file output converted from its bedGraph output (Bismark's <code>bismark2bedGraph</code> module; see the section "Optional bedGraph output in the Bismark User Guide). A tab-separated file contains: the chromosome name, cytosine coordinate, cytosine coordinate (again), methylation value in percent, number of methylated reads and the number of unmethylated reads. The file should not contain a header line. Coordinates are 1-based. Strand information does not need to be provided, but is inferred from the coordinates: Coordinates on the - strand specify the C on the - strand (G on the + strand). Coordinates referring to cytosines not in CpG content are automatically discarded. Here are some example lines (genome assembly hg19):
<p class="a"><code>
...<br />
chr9 73252 73252 100 1 0<br />
chr9 73253 73253 0 0 1<br />
chr9 73256 73256 100 1 0<br />
chr9 73260 73260 0 0 1<br />
chr9 73262 73262 100 1 0<br />
chr9 73269 73269 100 1 0<br />
...
</p></code>
</p>
<p class="a"><b><code>bismarkCytosine</code></b><br />
<code>bed</code> files are assumed to have the format as defined by Bismark's cytosine report output (Bismark's <code>coverage2cytosine</code> module; see the section "Optional genome-wide cytosine report output" in the Bismark User Guide). A tab-separated file contains: the chromosome name, cytosine coordinate, the strand, number of methylated reads, number of unmethylated reads, and additional information not taken into account by <b>RnBeads</b>. The file should not contain a header line. Coordinates are 1-based. Coordinates on the - strand specify the C on the - strand (G on the + strand). CpG without coverage are allowed, but not required. Here are some example lines (genome assembly hg19):
<p class="a"><code>
...<br />
chr22 16050097 + 0 0 CG CGG<br />
chr22 16050098 - 0 0 CG CGA<br />
chr22 16050114 + 0 0 CG CGG<br />
chr22 16050115 - 0 0 CG CGT<br />
...<br />
chr22 16115591 + 1 1 CG CGC<br />
chr22 16117938 - 0 2 CG CGT<br />
chr22 16122790 + 0 1 CG CGC<br />
...
</p></code>
</p>
<p class="a"><b><code>Encode</code></b><br />
<code>bed</code> files are assumed to have the format as the ones that can be downloaded from UCSC's ENCODE data portal. A tab-separated file contains: the chromosome name, start coordinate, end coordinate, some identifier, read coverage, the strand, start and end coordinates again (not sure why; we discard this information), some color value, read coverage and the methylation percentage. The file should contain a header line. Coordinates are 0-based. Note that this file format is very similar but not identical to the <code>'BisSNP'</code> one. Here are some example lines (genome assembly hg19):
<p class="a"><code>
track name="SL1815 MspIRRBS" description="HepG2_B1__GC_" visibility=2 itemRgb="On"<br />
chr1 1000170 1000171 HepG2_B1__GC_ 62 + 1000170 1000171 55,255,0 62 6<br />
chr1 1000190 1000191 HepG2_B1__GC_ 62 + 1000190 1000191 0,255,0 62 3<br />
chr1 1000191 1000192 HepG2_B1__GC_ 31 - 1000191 1000192 0,255,0 31 0<br />
chr1 1000198 1000199 HepG2_B1__GC_ 62 + 1000198 1000199 55,255,0 62 10<br />
chr1 1000199 1000200 HepG2_B1__GC_ 31 - 1000199 1000200 0,255,0 31 0<br />
chr1 1000206 1000207 HepG2_B1__GC_ 31 - 1000206 1000207 55,255,0 31 10<br />
...
</p></code>
</p>
</p>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_pipeline" href="#a_resources">
Can I combine the methylome resources on this site with the data of my samples?
</a>
</h4>
</div>
<div id="a_resources" class="panel-collapse collapse">
<div class="panel-body">
Yes, and it is very easy. You need to copy all data files to a single directory and to merge the sample annotation tables. Just follow the steps below.</p>
<ol>
<li>Create a new directory to host all data files and the generated reports. In the following steps, we use the directory <code>project</code>.</li>
<li>Download the files <code>data.zip</code>, <code>samples.csv</code> and <code>analysis.xml</code> from a dataset we provide on the <a href="methylomes.html">methylome resources page</a>.</li>
<li>Unzip the contents of <code>data.zip</code> to <code>project/data</code>. Copy <code>samples.csv</code> to the data directory as well. Keep the file <code>analysis.xml</code> in the parent directory <code>project</code>.</li>
<li>Copy the data files of your samples also to <code>project/data</code>.</li>
<li>Open and modify the file <code>samples.csv</code> by adding the information for your samples to the annotation table. This file is in comma-separated format and can be edited by any spreadsheet software, such as Microsoft Excel or LibreOffice. If you still have little experience with <b>RnBeads</b>, avoid renaming columns because this might affect the subsequent analysis steps.</li>
</ol>
<p>Once you have added your dataset to the downloaded one, you can start the analysis pipeline using commands similar to the ones provided below:</p>
<p class="a"><code>
<span style="color:#008000"># Set the working directory</span><br />
setwd(<span style="color:#000080">"project"</span>)<br />
<br />
<span style="color:#008000"># Start the analysis pipeline</span><br />
library(RnBeads)<br />
rnb.run.xml(<span style="color:#000080">"analysis.xml"</span>)<br /></code></p>
<p class="a">Feel free to experiment with different analysis options by editing the file <code>analysis.xml</code> or setting them in the R session using the function <code>rnb.options()</code>.
</p>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_pipeline" href="#a_options">
Why are the option values reset to default when I load a saved session?
</a>
</h4>
</div>
<div id="a_options" class="panel-collapse collapse">
<div class="panel-body">
The option values are saved and handled internally by the <b>RnBeads</b> package. Therefore, if you save your R session using the function <code>save.image()</code>, the analysis options are not stored. You can copy them to a list, and reset them upon loading, as shown in the example below:</p>
<p class="a"><code>
<span style="color:#008000"># Saving the current session</span><br />
RnBeadsOptions <- rnb.options()<br />
save.image(file = <span style="color:#000080">"my.analysis.RData"</span>)<br />
<br />
<span style="color:#008000"># Loading a session</span><br />
library(RnBeads)<br />
load(<span style="color:#000080">"my.analysis.RData"</span>)<br />
do.call(rnb.options, RnBeadsOptions)</code>
</p>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_pipeline" href="#a_paired">
How do I tell <b>RnBeads</b> to perform a paired test in the differential analysis module?
</a>
</h4>
</div>
<div id="a_paired" class="panel-collapse collapse">
<div class="panel-body">
Suppose you have a sample annotation table like this one:</p>
<table class="table table-striped">
<thead>
<tr>
<th>sample</th>
<th>individual</th>
<th>diseaseState</th>
</tr>
</thead>
<tbody>
<tr>
<td>sample_1</td>
<td>John</td>
<td>normal</td>
</tr>
<tr>
<td>sample_2</td>
<td>John</td>
<td>tumor</td>
</tr>
<tr>
<td>sample_3</td>
<td>Jane</td>
<td>normal</td>
</tr>
<tr>
<td>sample_4</td>
<td>Jane</td>
<td>tumor</td>
</tr>
<tr>
<td>sample_5</td>
<td>George</td>
<td>normal</td>
</tr>
<tr>
<td>sample_6</td>
<td>George</td>
<td>tumor</td>
</tr>
</tbody>
</table>
<p class="a">Further suppose, you want to compare tumor vs normal but with the pairing information by the patient/individual. Then you would apply the following option setting:</p>
<pre class="pre-scrollable">
rnb.options("differential.comparison.columns"=c("diseaseState"),"columns.pairing"=c("diseaseState"="individual")
</pre>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_pipeline" href="#a_editAnnot">
Can I introduce additional sample grouping information for analysis?
</a>
</h4>
</div>
<div id="a_editAnnot" class="panel-collapse collapse">
<div class="panel-body">
After loading, you can add sample annotation information (traits) to an <code>RnBSet</code> object. Use the function <code>addPheno()</code> for this purpose. You can introduce a text string for each sample with the same designation for each group that you want to specify. The newly added column in the annotation table can then be used for grouping. You can either let <b>RnBeads</b> figure out the categories by itself, or explicitly set the corresponding group options (see <code>rnb.options()</code> for details). You can set values to <code>NA</code> for samples that you don't want to include in either of the groups.
If you want to specify explicit pairwise comparisons, just use the <code>differential.comparison.columns.all.pairwise</code> option.
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_pipeline" href="#a_greedycut">
How does the greedycut algorithm for filtering CpGs and samples work?
</a>
</h4>
</div>
<div id="a_greedycut" class="panel-collapse collapse">
<div class="panel-body">
In brief, the algorithm iteratively removes the CpGs or samples in the dataset that contain the largest fraction of unreliable measurements as indicated by detection p-values or read coverage.
</p>
Here are some mathematical details: Let A = {a_ij} be an indicator matrix in which the columns denote samples, and rows – sites. We set a_ij to 1 if the corresponding methylation measurement is unreliable, and 0 otherwise. Furthermore, let B_retained be a submatrix of A, obtained after removing some columns and/or rows, and Bremoved be the set of elements of A that were removed. Using the notation introduced above, a filtering step splits the elements of A in two groups – retained and removed, which should mirror as closely as possible the properties unreliable and reliable. We thus consider the step of removing low quality samples and/or sites (columns and rows in A, respectively) as a classification problem. For every outcome B_retained (and the removed elements B_removed), one can compute sensitivity Se and specificity Sp w.r.t. to the ground truth, i.e. unreliable and reliable. We define D to be the distance of the point (1 – Sp, Se) to the diagonal in a typical a ROC curve plot, and search for an optimal submatrix B_retained with respect to the metric D.</p>
There are two hurdles to obtaining an exact solution of this problem: (1) there is not necessarily a unique matrix B_retained with a minimal value of D, and (2) the problem is NP-complete. Therefore, in mathematical terms, Greedycut is a greedy search for an optimal submatrix B_retained of a given indicator matrix A = {a_ij} with respect to a specific criterion D.
</p>
Further details for the design of this algorithm (finding a maximum induced indicator submatrix) and some of its properties are described in Section 3.2 of this <a href="http://dx.doi.org/10.22028/D291-26574">Ph.D. thesis</a>.
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_pipeline" href="#a_diffmethnull">
<b>RnBeads</b> shows the error message: Error in save.rnb.diffmeth(diffmeth, diffmeth.path): trying to get slot "disk.dump" from an object of a basic class ("NULL") with no slots?
</a>
</h4>
</div>
<div id="a_diffmethnull" class="panel-collapse collapse">
<div class="panel-body">
It is likely that the grouping information that you specified to <b>RnBeads</b> is invalid, such that <b>RnBeads</b> cannot perform differential analysis. In the <b>RnBeads</b> log, there is likely a line stating: "WARNING No valid grouping information found. NULL returned". Please validate that the column name that you specified using <code>differential.comparison.columns</code> matches the correct column in your sample annotation sheet. Additionally, please check the values for the options <code>min.group.size</code> and <code>max.group.count</code>, which specify how the accepted groups for differential analysis look.
</div>
</div>
</div>
</div>
<h2>Reports & Figures</h2>
<div class="panel-group" id="accordion_repfig">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_repfig" href="#a_rescale">
Can I rescale the images in the figures?
</a>
</h4>
</div>
<div id="a_rescale" class="panel-collapse collapse">
<div class="panel-body">
<b>RnBeads</b> typically generates thousands of images in one run of the pipeline, and their resolutions are tailored to the limited space in the HTML reports. In some cases, a high-resolution image can be viewed by clicking on the corresponding image in the report. Examples for such include the heatmaps in the report on methylation profiles, as well as the plots in the report on differential methylation. In other cases, you can use the generated PDF file underlying the plot of interest. There are links to the corresponding PDF images at the figure captions in the reports. PDF files store graphics in vector format, which allows rescaling to any size without loss of quality.
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_repfig" href="#a_background">
Can I change the background color or other properties of the generated plots?
</a>
</h4>
</div>
<div id="a_background" class="panel-collapse collapse">
<div class="panel-body">
Some of the visual properties of the images can be specified using <b>RnBeads</b> options such as <code>colors.category</code> and <code>colors.gradient</code>. See the section <i>Analysis Parameter Overview</i> of the <a href="http://bioconductor.org/packages/release/bioc/vignettes/RnBeads/inst/doc/RnBeads.pdf">RnBeads vignette</a> for more information.</p>
<p class="a"><b>RnBeads</b> utilizes the package <a href="http://had.co.nz/ggplot2/">ggplot2</a> for generating most of the figures. Therefore, many aspects of the plots can be modified by adjusting the corresponding parameters in the default visual theme. As a simple example, executing the following command before starting the analysis pipeline sets the black-and-white theme:</p>
<p class="a"><code>theme_set(theme_bw())</code></p>
<p class="a">Please check the documentation of <i>ggplot2</i> for a detailed description of themes. We can also recommend an online <a href="http://sape.inf.usi.ch/quick-reference/ggplot2/themes">quick reference</a> on the subject, put together by members of the Sape research group at the University of Lugano.
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_repfig" href="#a_lola">
Why do all LOLA enrichment plots produce "plotting error", although <code>differential.enrichment.lola=TRUE</code>?
</a>
</h4>
</div>
<div id="a_lola" class="panel-collapse collapse">
<div class="panel-body">
<b>RnBeads</b> makes extensive use of other bioconductor- and CRAN-packages, which themselves have further dependencies. For instance, the <a href="http://bioconductor.org/packages/release/bioc/html/LOLA.html">LOLA package</a> makes use of the <a href="https://www.bioconductor.org/packages/release/bioc/html/qvalue.html">qvalue</a> package to adjust its p-values for multiple testing. This package is not loaded by default through the LOLA package, since multiple testing correction is optional. However, <b>RnBeads</b> relies on corrected p-values as thresholds and throws an error, if no corrected p-value is available. To fix this issue, manually install <a href="https://www.bioconductor.org/packages/release/bioc/html/qvalue.html">qvalue</a> and restart your analysis:
<p class="a"><code><br />
source("https://bioconductor.org/biocLite.R")<br />
biocLite("qvalue")
</code></p>
</div>
</div>
</div>
</div>
<h2>Technical Issues</h2>
<div class="panel-group" id="accordion_technical">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_technical" href="#a_parallelmem">
I noticed that my analysis requires a lot of memory when I use multiple cores. What can I do?
</a>
</h4>
</div>
<div id="a_parallelmem" class="panel-collapse collapse">
<div class="panel-body">
R and the <code>foreach</code> package that we use for parallelization across multiple cores have been known to create unnecessary copies of in-memory objects for each parallel task. We therefore recommend to reduce the number cores using the <code>parallel.setup()</code> function in RnBeads. For large datasets, we recommend not to use more than 2 to 4 cores and - if possible - parallelize using a high performance compute cluster (HPC; see the "Deploying RnBeads on a Scientific Compute Cluster" section in the <a href="http://bioconductor.org/packages/release/bioc/vignettes/RnBeads/inst/doc/RnBeads.pdf">RnBeads vignette</a>) rather than running the entire analysis on too many cores of a single machine.
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_technical" href="#a_tempdir">
I heard that <b>RnBeads</b> stores large objects on disk rather than in main memory. Where are these objects stored? Can temporary files accumulate on my hard drive?
</a>
</h4>
</div>
<div id="a_tempdir" class="panel-collapse collapse">
<div class="panel-body">
Any temporary files are automatically deleted when an RnBeads analysis is completed and the corresponding R session is closed. Typically the temp directory can be found on the <code>/tmp/</code> path of a Linux/Unix machine. You can check where R stores your temporary data using the <code>tempdir()</code> command in an R session. By default RnBeads also stores big datasets on the hard drive during the analysis in order to reduce memory consumption. For this task it makes implicit use of the <code>ff</code> package for storing temporary files. Within an R session, you can see the ff temporary directory by executing the following commands:</p>
<p class="a"><code><br />
tempdir()<br />
library(ff)<br />
getOption("fftempdir")
</code></p>
You can change where big RnBeads methylation datasets are stored on disk using
<p class="a"><code><br />
options(fftempdir="MY_DIRECTORY")
</code></p>
before running your analysis. However, if an R session is abnormally terminated, some temporary files might remain, because ff and RnBeads cannot regain control of the R sesseion to delete these files. If you suspect that your computer contains old temporary files from RnBeads analyses, check the contents of the above directories and delete them manually.
</div>
</div>
</div>
</div>
</div>
<!-- /.container -->
<!-- Footer -->
<hr>
<footer class="py-5 bg-inverse">
<div class="container">
<p class="m-0 text-center text-white">Copyright © <a href="mailto:[email protected]">RnBeads Development Team</a> 2024 | <a href="https://cemm.at/contact/disclaimer/">Disclaimer / Impressum / Data protection</a></p>
</div>
</footer>
<!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>