diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..fd874fee --- /dev/null +++ b/404.html @@ -0,0 +1 @@ + CHAMPAGNE
\ No newline at end of file diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 00000000..1cf13b9f Binary files /dev/null and b/assets/images/favicon.png differ diff --git a/assets/javascripts/bundle.51198bba.min.js b/assets/javascripts/bundle.51198bba.min.js new file mode 100644 index 00000000..31bd0414 --- /dev/null +++ b/assets/javascripts/bundle.51198bba.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Ri=Object.create;var gr=Object.defineProperty;var ki=Object.getOwnPropertyDescriptor;var Hi=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Pi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,on=Object.prototype.propertyIsEnumerable;var nn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&nn(e,r,t[r]);if(Ht)for(var r of Ht(t))on.call(t,r)&&nn(e,r,t[r]);return e};var an=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&on.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var $i=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Hi(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=ki(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ri(Pi(e)):{},$i(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var cn=Pt((xr,sn)=>{(function(e,t){typeof xr=="object"&&typeof sn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(T){return!!(T&&T!==document&&T.nodeName!=="HTML"&&T.nodeName!=="BODY"&&"classList"in T&&"contains"in T.classList)}function c(T){var Qe=T.type,De=T.tagName;return!!(De==="INPUT"&&s[Qe]&&!T.readOnly||De==="TEXTAREA"&&!T.readOnly||T.isContentEditable)}function f(T){T.classList.contains("focus-visible")||(T.classList.add("focus-visible"),T.setAttribute("data-focus-visible-added",""))}function u(T){T.hasAttribute("data-focus-visible-added")&&(T.classList.remove("focus-visible"),T.removeAttribute("data-focus-visible-added"))}function p(T){T.metaKey||T.altKey||T.ctrlKey||(a(r.activeElement)&&f(r.activeElement),n=!0)}function m(T){n=!1}function d(T){a(T.target)&&(n||c(T.target))&&f(T.target)}function h(T){a(T.target)&&(T.target.classList.contains("focus-visible")||T.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(T.target))}function v(T){document.visibilityState==="hidden"&&(o&&(n=!0),G())}function G(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function oe(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(T){T.target.nodeName&&T.target.nodeName.toLowerCase()==="html"||(n=!1,oe())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),G(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var fn=Pt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(f){return!1}},r=t(),n=function(f){var u={next:function(){var p=f.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(f){return encodeURIComponent(f).replace(/%20/g,"+")},i=function(f){return decodeURIComponent(String(f).replace(/\+/g," "))},s=function(){var f=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof f){var d=this;p.forEach(function(oe,N){d.append(N,oe)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),f._entries&&(f._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(c,f){typeof c!="string"&&(c=String(c)),f&&typeof f!="string"&&(f=String(f));var u=document,p;if(f&&(e.location===void 0||f!==e.location.href)){f=f.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=f,u.head.appendChild(p);try{if(p.href.indexOf(f)!==0)throw new Error(p.href)}catch(T){throw new Error("URL unable to set base "+f+" due to "+T)}}var m=u.createElement("a");m.href=c,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=c,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!f)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,G=!0,oe=this;["append","delete","set"].forEach(function(T){var Qe=h[T];h[T]=function(){Qe.apply(h,arguments),v&&(G=!1,oe.search=h.toString(),G=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,G&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(c){Object.defineProperty(s,c,{get:function(){return this._anchorElement[c]},set:function(f){this._anchorElement[c]=f},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(c){a(c)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(c){this._anchorElement.search=c,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var c=this;return function(){return c.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(c){this._anchorElement.href=c,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(c){this._anchorElement.pathname=c},enumerable:!0},origin:{get:function(){var c={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],f=this._anchorElement.port!=c&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(f?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(c){},enumerable:!0},username:{get:function(){return""},set:function(c){},enumerable:!0}}),i.createObjectURL=function(c){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(c){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var Kr=Pt((Mt,qr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Mt=="object"&&typeof qr=="object"?qr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ci}});var s=i(279),a=i.n(s),c=i(370),f=i.n(c),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(O){return!1}}var d=function(O){var E=p()(O);return m("cut"),E},h=d;function v(j){var O=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[O?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var G=function(O,E){var H=v(O);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},oe=function(O){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof O=="string"?H=G(O,E):O instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(O==null?void 0:O.type)?H=G(O.value,E):(H=p()(O),m("copy")),H},N=oe;function T(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?T=function(E){return typeof E}:T=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},T(j)}var Qe=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=O.action,H=E===void 0?"copy":E,I=O.container,q=O.target,Me=O.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&T(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function wi(j,O){if(!(j instanceof O))throw new TypeError("Cannot call a class as a function")}function rn(j,O){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=f()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",kt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),E}(a()),Ci=Ai},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=f.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function c(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function f(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=c},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function c(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return f(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function f(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=c},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),f=document.createRange();f.selectNodeContents(i),c.removeAllRanges(),c.addRange(f),s=c.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function f(){c.off(i,f),s.apply(a,arguments)}return f._=s,this.on(i,f,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,f=a.length;for(c;c{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var ns=/["'&<>]/;Go.exports=os;function os(e){var t=""+e,r=ns.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(f[0]===6||f[0]===2)){r=0;continue}if(f[0]===3&&(!i||f[1]>i[0]&&f[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{c(n[m](d))}catch(h){p(i[0][3],h)}}function c(m){m.value instanceof et?Promise.resolve(m.value.v).then(f,u):p(i[0][2],m)}function f(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function ln(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),o(a,c,s.done,s.value)})}}function o(i,s,a,c){Promise.resolve(c).then(function(f){i({value:f,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),c=a.next();!c.done;c=a.next()){var f=c.value;f.remove(this)}}catch(v){t={error:v}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(C(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{mn(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)mn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function jt(e){return e instanceof Ie||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function mn(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new En(r,n)},t}(F);var En=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,c=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Tn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var Te=new Tn(Sn);var _=new F(function(e){return e.complete()});function Vt(e){return e&&C(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return C(Cr(e))?e.pop():void 0}function Oe(e){return Vt(Cr(e))?e.pop():void 0}function zt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return C(e==null?void 0:e.then)}function qt(e){return C(e[ft])}function Kt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ni(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=Ni();function Gt(e){return C(e==null?void 0:e[Yt])}function Bt(e){return pn(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return C(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(qt(e))return qi(e);if(pt(e))return Ki(e);if(Nt(e))return Qi(e);if(Kt(e))return On(e);if(Gt(e))return Yi(e);if(Jt(e))return Gi(e)}throw Qt(e)}function qi(e){return new F(function(t){var r=e[ft]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Ki(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?A(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Vn(function(){return new Zt}))}}function zn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(f){var u,p,m,d=0,h=!1,v=!1,G=function(){p==null||p.unsubscribe(),p=void 0},oe=function(){G(),u=m=void 0,h=v=!1},N=function(){var T=u;oe(),T==null||T.unsubscribe()};return y(function(T,Qe){d++,!v&&!h&&G();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,c))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,G(),p=$r(oe,o,$e),De.error($e)},complete:function(){h=!0,G(),p=$r(oe,s),De.complete()}}),U(T).subscribe(u))})(f)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),B())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Qn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,Te),l(()=>Xe(e)),V(Xe(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Te),l(()=>rr(e)),V(rr(e)))}var Gn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Dr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),ga?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Dr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=va.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Bn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Xn=typeof WeakMap!="undefined"?new WeakMap:new Gn,Zn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ya.getInstance(),n=new Aa(t,r,this);Xn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Zn.prototype[e]=function(){var t;return(t=Xn.get(this))[e].apply(t,arguments)}});var Ca=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Zn}(),eo=Ca;var to=new x,Ra=$(()=>k(new eo(e=>{for(let t of e)to.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),J(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var ro=new x,ka=$(()=>k(new IntersectionObserver(e=>{for(let t of e)ro.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),J(1));function sr(e){return ka.pipe(S(t=>t.observe(e)),g(t=>ro.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function no(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),B())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function oo(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function Ha(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Pa(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function io(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:oo("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!Ha(n,r)}return!0}),pe());return Pa().pipe(g(t=>t?_:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function ao(){return new x}function so(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)so(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)so(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function co(){return location.hash.substring(1)}function Vr(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function $a(e){return L(b(window,"hashchange"),e).pipe(l(co),V(co()),A(t=>t.length>0),J(1))}function fo(e){return $a(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function zr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function uo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function Nr(e,t){return e.pipe(g(r=>r?t():_))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>_),g(r=>r.status!==200?Tt(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),J(1))}function po(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function pr(e){let t=M("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Tt(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function lo(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function mo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(lo),V(lo()))}function ho(){return{width:innerWidth,height:innerHeight}}function bo(){return b(window,"resize",{passive:!0}).pipe(l(ho),V(ho()))}function vo(){return Q([mo(),bo()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(Z("size")),o=Q([n,r]).pipe(l(()=>Xe(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:c,y:f}])=>({offset:{x:s.x-c,y:s.y-f+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,c,f)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:c,error:f});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(`

Changelog

CHAMPAGNE development version

New features

  • New GitHub Actions workflow to launch a stub run from the champagne CLI.

Bug fixes

  • CLI error when biowulf-specific environment variables are not defined. (#54)

CHAMPAGNE 0.1.0

Quality control steps implemented for single-end reads

  • Trim raw reads, FastQC on raw and trimmed reads, and FastQ Screen on trimmed reads.
  • Exclude reads that align to blacklist regions, align remaining reads to the reference genome, and deduplicate.
  • Preseq on aligned reads.
  • Phantompeakqualtools on aligned and deduplicated reads.
  • Process reads with deepTools: bam coverage to generate bigwigs for each sample, summarize all bigwigs, and compute matrices relative to TSSs and scaled to metagene regions.
  • Generate plots with deepTools: PCA, profile, heatmap, spearman correlation, and fingerprint plots.
  • Summarize all quality control steps in a MultiQC report.
  • Input-normalize ChIP fragments for the next stage of the pipeline.

Last update: 2023-09-07
\ No newline at end of file diff --git a/contributing/index.html b/contributing/index.html new file mode 100644 index 00000000..81d67bf8 --- /dev/null +++ b/contributing/index.html @@ -0,0 +1 @@ + How to contribute - CHAMPAGNE

Contributing to CHAMPAGNE

TODO -- describe gitflow, require PRs...

Use pre-commit hooks

Pre-commit can automatically format your code, check for spelling errors, etc. every time you commit.

Install pre-commit if you haven't already, then run pre-commit install to install the hooks specified in .pre-commit-config.yaml. Pre-commit will run the hooks every time you commit.

Versions

Increment the version number following semantic versioning1 in the VERSION file.

Changelog

Keep the changelog up to date with all notable changes in CHANGELOG.md2.

VS code extensions

If you use VS code, installing nf-core extension pack is recommended.


  1. semantic versioning guidelines https://semver.org/ 

  2. changelog guidelines: https://keepachangelog.com/en/1.1.0/ 


Last update: 2023-09-07
\ No newline at end of file diff --git a/contributors/index.html b/contributors/index.html new file mode 100644 index 00000000..e7894e56 --- /dev/null +++ b/contributors/index.html @@ -0,0 +1 @@ + Contributors - CHAMPAGNE

Should include a list of all contributors, including GitHub handles when appropriate. In addition, a statement of who contributed to the source code specifically, identified by initials. An example is included below.

TODO: populate this automagically similar to https://nf-co.re/contributors? or link to GitHub contributor page? could use gh action: https://github.com/lowlighter/metrics/blob/master/source/plugins/contributors/README.md

Contributions

The following members contributed to the development of the CARLISLE pipeline:

SS contributed to the generating the source code and all members contributed to the main concepts and analysis.


Last update: 2023-09-07
\ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..4377a273 --- /dev/null +++ b/index.html @@ -0,0 +1,8 @@ + CHAMPAGNE

CHAMPAGNE 🍾

CH**rom**A**tin i**M**muno **P**recipit**A**tion sequencin**G a**N**alysis pip**E**line

build mkdocs

🚧 This project is under active development. It is not yet ready for production use. 🚧

Getting started

TODO

Usage

champagne CLI

You can run champagne from the command line. The CLI includes helper steps for execution on supported high performance computing clusters including Biowulf and FRCE.

Install the champagne CLI:

cd CHAMPAGNE
+pip3 install .
+

Run the test dataset using the test profile:

champagne run -profile test,prod,singularity
+

or explicitly specify the output directory and input:

champagne run -profile prod,singularity --outdir results/test --input assets/samplesheet_test.csv
+

Launch a stub run to view the steps that will run without performing the full analysis.

champagne run -profile ci_stub -stub
+

nextflow pipeline

You can run the nextflow pipeline directly by specifying this GitHub repo. You will need nextflow and either singularity or docker installed.

nextflow run CCBR/CHAMPAGNE -profile test,prod,singularity
+

You can specify a specific version, tag, or branch with -r:

nextflow run CCBR/CHAMPAGNE -r v1.0.0 -profile test,prod,singularity
+

Help & Contributing

Come across a bug? Open an issue and include a minimal reproducible example.

Have a question? Ask it in discussions.

Want to contribute to this project? Check out the contributing guidelines.

References

This repo was originally generated from the CCBR Nextflow Template. The template takes inspiration from nektool1 and the nf-core template. If you plan to contribute your pipeline to nf-core, don't use this template -- instead follow nf-core's instructions2.

Information on who the pipeline was developed for, and a statement if it's only been tested on Biowulf. For example:

It has been developed and tested solely on NIH HPC Biowulf.

Also include a workflow image to summarize the pipeline.


Last update: 2023-09-07
\ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..9d5ddac9 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +#https://pypi.org/project/mkdocs-git-revision-date-localized-plugin/ +mkdocs-git-revision-date-localized-plugin==1.2.0 +#https://pypi.org/project/mkdocs-minify-plugin/ +mkdocs-minify-plugin==0.6.4 +#https://pypi.org/project/mkdocs-git-revision-date-plugin/ +mkdocs-git-revision-date-plugin==0.3.2 +#https://pypi.org/project/mkdocs-material/ +mkdocs-material==9.1.6 +#https://pypi.org/project/mkdocs-material-extensions/ +mkdocs-material-extensions==1.1.1 diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 00000000..ef0b8ba6 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Background","text":""},{"location":"#champagne","title":"CHAMPAGNE \ud83c\udf7e","text":"

CH**rom**A**tin i**M**muno **P**recipit**A**tion sequencin**G a**N**alysis pip**E**line

\ud83d\udea7 This project is under active development. It is not yet ready for production use. \ud83d\udea7

"},{"location":"#getting-started","title":"Getting started","text":"

TODO

"},{"location":"#usage","title":"Usage","text":""},{"location":"#champagne-cli","title":"champagne CLI","text":"

You can run champagne from the command line. The CLI includes helper steps for execution on supported high performance computing clusters including Biowulf and FRCE.

Install the champagne CLI:

cd CHAMPAGNE\npip3 install .\n

Run the test dataset using the test profile:

champagne run -profile test,prod,singularity\n

or explicitly specify the output directory and input:

champagne run -profile prod,singularity --outdir results/test --input assets/samplesheet_test.csv\n

Launch a stub run to view the steps that will run without performing the full analysis.

champagne run -profile ci_stub -stub\n
"},{"location":"#nextflow-pipeline","title":"nextflow pipeline","text":"

You can run the nextflow pipeline directly by specifying this GitHub repo. You will need nextflow and either singularity or docker installed.

nextflow run CCBR/CHAMPAGNE -profile test,prod,singularity\n

You can specify a specific version, tag, or branch with -r:

nextflow run CCBR/CHAMPAGNE -r v1.0.0 -profile test,prod,singularity\n
"},{"location":"#help-contributing","title":"Help & Contributing","text":"

Come across a bug? Open an issue and include a minimal reproducible example.

Have a question? Ask it in discussions.

Want to contribute to this project? Check out the contributing guidelines.

"},{"location":"#references","title":"References","text":"

This repo was originally generated from the CCBR Nextflow Template. The template takes inspiration from nektool1 and the nf-core template. If you plan to contribute your pipeline to nf-core, don't use this template -- instead follow nf-core's instructions2.

Information on who the pipeline was developed for, and a statement if it's only been tested on Biowulf. For example:

It has been developed and tested solely on NIH HPC Biowulf.

Also include a workflow image to summarize the pipeline.

  1. nektool https://github.com/beardymcjohnface/nektool \u21a9

  2. instructions for nf-core pipelines https://nf-co.re/docs/contributing/tutorials/creating_with_nf_core \u21a9

"},{"location":"changelog/","title":"Changelog","text":""},{"location":"changelog/#champagne-development-version","title":"CHAMPAGNE development version","text":""},{"location":"changelog/#new-features","title":"New features","text":"
  • New GitHub Actions workflow to launch a stub run from the champagne CLI.
"},{"location":"changelog/#bug-fixes","title":"Bug fixes","text":"
  • CLI error when biowulf-specific environment variables are not defined. (#54)
"},{"location":"changelog/#champagne-010","title":"CHAMPAGNE 0.1.0","text":""},{"location":"changelog/#quality-control-steps-implemented-for-single-end-reads","title":"Quality control steps implemented for single-end reads","text":"
  • Trim raw reads, FastQC on raw and trimmed reads, and FastQ Screen on trimmed reads.
  • Exclude reads that align to blacklist regions, align remaining reads to the reference genome, and deduplicate.
  • Preseq on aligned reads.
  • Phantompeakqualtools on aligned and deduplicated reads.
  • Process reads with deepTools: bam coverage to generate bigwigs for each sample, summarize all bigwigs, and compute matrices relative to TSSs and scaled to metagene regions.
  • Generate plots with deepTools: PCA, profile, heatmap, spearman correlation, and fingerprint plots.
  • Summarize all quality control steps in a MultiQC report.
  • Input-normalize ChIP fragments for the next stage of the pipeline.
"},{"location":"contributing/","title":"Contributing to CHAMPAGNE","text":"

TODO -- describe gitflow, require PRs...

"},{"location":"contributing/#use-pre-commit-hooks","title":"Use pre-commit hooks","text":"

Pre-commit can automatically format your code, check for spelling errors, etc. every time you commit.

Install pre-commit if you haven't already, then run pre-commit install to install the hooks specified in .pre-commit-config.yaml. Pre-commit will run the hooks every time you commit.

"},{"location":"contributing/#versions","title":"Versions","text":"

Increment the version number following semantic versioning1 in the VERSION file.

"},{"location":"contributing/#changelog","title":"Changelog","text":"

Keep the changelog up to date with all notable changes in CHANGELOG.md2.

"},{"location":"contributing/#vs-code-extensions","title":"VS code extensions","text":"

If you use VS code, installing nf-core extension pack is recommended.

  1. semantic versioning guidelines https://semver.org/ \u21a9

  2. changelog guidelines: https://keepachangelog.com/en/1.1.0/ \u21a9

"},{"location":"contributors/","title":"Contributors","text":"

Should include a list of all contributors, including GitHub handles when appropriate. In addition, a statement of who contributed to the source code specifically, identified by initials. An example is included below.

TODO: populate this automagically similar to https://nf-co.re/contributors? or link to GitHub contributor page? could use gh action: https://github.com/lowlighter/metrics/blob/master/source/plugins/contributors/README.md

"},{"location":"contributors/#contributions","title":"Contributions","text":"

The following members contributed to the development of the CARLISLE pipeline:

  • Samantha Sevilla

SS contributed to the generating the source code and all members contributed to the main concepts and analysis.

"},{"location":"user-guide/getting-started/","title":"1. Getting Started","text":"

This should set the stage for all of the pipeline requirements. Examples are listed below.

"},{"location":"user-guide/getting-started/#overview","title":"Overview","text":"

The CARLISLE github repository is stored locally, and will be used for project deployment. Multiple projects can be deployed from this one point simultaneously, without concern.

"},{"location":"user-guide/getting-started/#1-getting-started","title":"1. Getting Started","text":""},{"location":"user-guide/getting-started/#11-introduction","title":"1.1 Introduction","text":"

The CARLISLE Pipelie beings with raw FASTQ files and performs trimming followed by alignment using BOWTIE2. Data is then normalized through either the use of an user-species species (IE E.Coli) spike-in control or through the determined library size. Peaks are then called using MACS2, SEACR, and GoPEAKS with various options selected by the user. Peaks are then annotated, and summarized into reports. If designated, differential analysis is performed using DESEQ2. QC reports are also generated with each project using FASTQC and MULTIQC. Annotations are added using HOMER and ROSE. GSEA Enrichment analysis predictions are added using CHIPENRICH.

The following are sub-commands used within CARLISLE:

  • initialize: initialize the pipeline
  • dryrun: predict the binding of peptides to any MHC molecule
  • cluster: execute the pipeline on the Biowulf HPC
  • local: execute a local, interactive, session
  • git: execute GitHub actions
  • unlock: unlock directory
  • DAG: create DAG report
  • report: create SNAKEMAKE report
  • testrun: copies test manifests and files to WORKDIR
"},{"location":"user-guide/getting-started/#12-setup-dependencies","title":"1.2 Setup Dependencies","text":"

CARLISLE has several dependencies listed below. These dependencies can be installed by a sysadmin. All dependencies will be automatically loaded if running from Biowulf.

  • bedtools: \"bedtools/2.30.0\"
  • bedops: \"bedops/2.4.40\"
"},{"location":"user-guide/getting-started/#13-login-to-the-cluster","title":"1.3 Login to the cluster","text":"

CARLISLE has been exclusively tested on Biowulf HPC. Login to the cluster's head node and move into the pipeline location.

# ssh into cluster's head node\nssh -Y $USER@biowulf.nih.gov\n
"},{"location":"user-guide/getting-started/#14-load-an-interactive-session","title":"1.4 Load an interactive session","text":"

An interactive session should be started before performing any of the pipeline sub-commands, even if the pipeline is to be executed on the cluster.

# Grab an interactive node\nsinteractive --time=12:00:00 --mem=8gb  --cpus-per-task=4 --pty bash\n
"},{"location":"user-guide/output/","title":"4. Expected Output","text":"

This should include all pertitant information about output files, including extensions that differentiate files. An example is provided below.

"},{"location":"user-guide/output/#4-expected-outputs","title":"4. Expected Outputs","text":"

The following directories are created under the WORKDIR/results directory:

  • alignment_stats: this directory include information on the alignment of each sample
  • peaks: this directory contains a sub-directory that relates to the quality threshold used.
  • quality threshold
    • contrasts: this directory includes the contrasts for each line listed in the contrast manifest
    • peak_caller: this directory includes all peak calls from each peak_caller (SEACR, MACS2, GOPEAKS) for each sample
    • annotation
      • go_enrichment: this directory includes gene set enrichment pathway predictions
      • homer: this directory includes the annotation output from HOMER
      • rose: this directory includes the annotation output from ROSE
\u251c\u2500\u2500 alignment_stats\n\u251c\u2500\u2500 bam\n\u251c\u2500\u2500 peaks\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 0.05\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 contrasts\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 contrast_id1.dedup_status\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 contrast_id2.dedup_status\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 gopeaks\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 annotation\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 go_enrichment\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 contrast_id1.dedup_status.go_enrichment_tables\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 contrast_id2.dedup_status.go_enrichment_html_report\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 homer\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 replicate_id1_vs_control_id.dedup_status.gopeaks_broad.motifs\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 homerResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 knownResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 replicate_id1_vs_control_id.dedup_status.gopeaks_narrow.motifs\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 homerResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 knownResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 replicate_id2_vs_control_id.dedup_status.gopeaks_broad.motifs\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 homerResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 knownResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 replicate_id2_vs_control_id.dedup_status.gopeaks_narrow.motifs\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 homerResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 knownResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 rose\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 replicate_id1_vs_control_id.dedup_status.gopeaks_broad.12500\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 replicate_id1_vs_control_id.dedup_status.gopeaks_narrow.12500\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 replicate_id2_vs_control_id.dedup_status.dedup.gopeaks_broad.12500\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 replicate_id2_vs_control_id.dedup_status.dedup.gopeaks_narrow.12500\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 peak_output\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 macs2\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 annotation\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 go_enrichment\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 contrast_id1.dedup_status.go_enrichment_tables\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 contrast_id2.dedup_status.go_enrichment_html_report\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 homer\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 replicate_id1_vs_control_id.dedup_status.macs2_narrow.motifs\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 homerResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 knownResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 replicate_id1_vs_control_id.dedup_status.macs2_broad.motifs\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 homerResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 knownResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 replicate_id2_vs_control_id.dedup_status.macs2_narrow.motifs\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 homerResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 knownResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 replicate_id2_vs_control_id.dedup_status.macs2_broad.motifs\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 homerResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 knownResults\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 rose\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 replicate_id1_vs_control_id.dedup_status.macs2_broad.12500\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 replicate_id1_vs_control_id.dedup_status.macs2_narrow.12500\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 replicate_id2_vs_control_id.dedup_status.macs2_broad.12500\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 replicate_id2_vs_control_id.dedup_status.macs2_narrow.12500\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 peak_output\n
"},{"location":"user-guide/preparing-files/","title":"2. Preparing Files","text":"

This should describe any input files needed, including config files, manifest files, and sample files. An example is provided below.

"},{"location":"user-guide/preparing-files/#2-preparing-files","title":"2. Preparing Files","text":"

The pipeline is controlled through editing configuration and manifest files. Defaults are found in the /WORKDIR/config and /WORKDIR/manifest directories, after initialization.

"},{"location":"user-guide/preparing-files/#21-configs","title":"2.1 Configs","text":"

The configuration files control parameters and software of the pipeline. These files are listed below:

  • config/config.yaml
  • resources/cluster.yaml
  • resources/tools.yaml
"},{"location":"user-guide/preparing-files/#211-cluster-config","title":"2.1.1 Cluster Config","text":"

The cluster configuration file dictates the resources to be used during submission to Biowulf HPC. There are two different ways to control these parameters - first, to control the default settings, and second, to create or edit individual rules. These parameters should be edited with caution, after significant testing.

"},{"location":"user-guide/preparing-files/#212-tools-config","title":"2.1.2 Tools Config","text":"

The tools configuration file dictates the version of each software or program that is being used in the pipeline.

"},{"location":"user-guide/preparing-files/#213-config-yaml","title":"2.1.3 Config YAML","text":"

There are several groups of parameters that are editable for the user to control the various aspects of the pipeline. These are :

  • Folders and Paths
  • These parameters will include the input and output files of the pipeline, as well as list all manifest names.
  • User parameters
  • These parameters will control the pipeline features. These include thresholds and whether to perform processes.
  • References
  • These parameters will control the location of index files, spike-in references, adaptors and species calling information.
"},{"location":"user-guide/preparing-files/#2131-user-parameters","title":"2.1.3.1 User Parameters","text":""},{"location":"user-guide/preparing-files/#21311-duplication-status","title":"2.1.3.1.1 Duplication Status","text":"

Users can select duplicated peaks (dedup) or non-deduplicated peaks (no_dedup) through the user parameter.

dupstatus: \"dedup, no_dedup\"\n
"},{"location":"user-guide/preparing-files/#21312-macs2-additional-option","title":"2.1.3.1.2 Macs2 additional option","text":"

MACS2 can be run with or without the control. adding a control will increase peak specificity Selecting \"Y\" for the macs2_control will run the paired control sample provided in the sample manifest

"},{"location":"user-guide/preparing-files/#2132-references","title":"2.1.3.2 References","text":"

Additional reference files may be added to the pipeline, if other species were to be used.

The absolute file paths which must be included are:

  1. fa: \"/path/to/species.fa\"
  2. blacklist: \"/path/to/blacklistbed/species.bed\"

The following information must be included:

  1. regions: \"list of regions to be included; IE chr1 chr2 chr3\"
  2. macs2_g: \"macs2 genome shorthand; IE mm IE hs\"
"},{"location":"user-guide/preparing-files/#22-preparing-manifests","title":"2.2 Preparing Manifests","text":"

There are two manifests, one which required for all pipelines and one that is only required if running a differential analysis. These files describe information on the samples and desired contrasts. The paths of these files are defined in the snakemake_config.yaml file. These files are:

  • samplemanifest
  • contrasts
"},{"location":"user-guide/preparing-files/#221-samples-manifest-required","title":"2.2.1 Samples Manifest (REQUIRED)","text":"

This manifest will include information to sample level information. It includes the following column headers:

  • sampleName: the sample name WITHOUT replicate number (IE \"SAMPLE\")
  • replicateNumber: the sample replicate number (IE \"1\")
  • isControl: whether the sample should be identified as a control (IE \"Y\")
  • controlName: the name of the control to use for this sample (IE \"CONTROL\")
  • controlReplicateNumber: the replicate number of the control to use for this sample (IE \"1\")
  • path_to_R1: the full path to R1 fastq file (IE \"/path/to/sample1.R1.fastq\")
  • path_to_R2: the full path to R1 fastq file (IE \"/path/to/sample2.R2.fastq\")

An example sampleManifest file is shown below:

sampleName replicateNumber isControl controlName controlReplicateNumber path_to_R1 path_to_R2 53_H3K4me3 1 N HN6_IgG_rabbit_negative_control 1 PIPELINE_HOME/.test/53_H3K4me3_1.R1.fastq.gz PIPELINE_HOME/.test/53_H3K4me3_1.R2.fastq.gz 53_H3K4me3 2 N HN6_IgG_rabbit_negative_control 1 PIPELINE_HOME/.test/53_H3K4me3_2.R1.fastq.gz PIPELINE_HOME/.test/53_H3K4me3_2.R2.fastq.gz HN6_H3K4me3 1 N HN6_IgG_rabbit_negative_control 1 PIPELINE_HOME/.test/HN6_H3K4me3_1.R1.fastq.gz PIPELINE_HOME/.test/HN6_H3K4me3_1.R2.fastq.gz HN6_H3K4me3 2 N HN6_IgG_rabbit_negative_control 1 PIPELINE_HOME/.test/HN6_H3K4me3_2.R1.fastq.gz PIPELINE_HOME/.test/HN6_H3K4me3_2.R2.fastq.gz HN6_IgG_rabbit_negative_control 1 Y - - PIPELINE_HOME/.test/HN6_IgG_rabbit_negative_control_1.R1.fastq.gz PIPELINE_HOME/.test/HN6_IgG_rabbit_negative_control_1.R2.fastq.gz"},{"location":"user-guide/run/","title":"3. Running the Pipeline","text":"

This should include all information about the various run commands provided within the pipeline.

"},{"location":"user-guide/run/#3-running-the-pipeline","title":"3. Running the Pipeline","text":""},{"location":"user-guide/run/#31-pipeline-overview","title":"3.1 Pipeline Overview","text":"

The Snakemake workflow has a multiple options:

Usage: bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle -m/--runmode=<RUNMODE> -w/--workdir=<WORKDIR>\n1.  RUNMODE: [Type: String] Valid options:\n    *) init : initialize workdir\n    *) run : run with slurm\n    *) reset : DELETE workdir dir and re-init it\n    *) dryrun : dry run snakemake to generate DAG\n    *) unlock : unlock workdir if locked by snakemake\n    *) runlocal : run without submitting to sbatch\n    *) testrun: run on cluster with included test dataset\n2.  WORKDIR: [Type: String]: Absolute or relative path to the output folder with write permissions.\n
"},{"location":"user-guide/run/#32-commands-explained","title":"3.2 Commands explained","text":"

The following explains each of the command options:

  • Preparation Commands
  • init (REQUIRED): This must be performed before any Snakemake run (dry, local, cluster) can be performed. This will copy the necessary config, manifest and Snakefiles needed to run the pipeline to the provided output directory.
  • dryrun (OPTIONAL): This is an optional step, to be performed before any Snakemake run (local, cluster). This will check for errors within the pipeline, and ensure that you have read/write access to the files needed to run the full pipeline.
  • Processing Commands
  • local: This will run the pipeline on a local node. NOTE: This should only be performed on an interactive node.
  • run: This will submit a master job to the cluster, and subsequent sub-jobs as needed to complete the workflow. An email will be sent when the pipeline begins, if there are any errors, and when it completes.
  • Other Commands (All optional)
  • unlock: This will unlock the pipeline if an error caused it to stop in the middle of a run.
  • testrun: This will run a test of the pipeline with test data

To run any of these commands, follow the the syntax:

bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=COMMAND --workdir=/path/to/output/dir\n
"},{"location":"user-guide/run/#33-typical-workflow","title":"3.3 Typical Workflow","text":"

A typical command workflow, running on the cluster, is as follows:

bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=init --workdir=/path/to/output/dir\n\nbash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=dryrun --workdir=/path/to/output/dir\n\nbash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=run --workdir=/path/to/output/dir\n
"},{"location":"user-guide/test-info/","title":"5. Running Test Data","text":"

This should walk the user through the steps of running the pipeline using test data

"},{"location":"user-guide/test-info/#5-pipeline-tutorial","title":"5. Pipeline Tutorial","text":"

Welcome to the CARLISLE Pipeline Tutorial!

"},{"location":"user-guide/test-info/#51-getting-started","title":"5.1 Getting Started","text":"

Review the information on the Getting Started for a complete overview the pipeline. The tutorial below will use test data available on NIH Biowulf HPC only. All example code will assume you are running v1.0 of the pipeline, using test data available on GitHub.

A. Change working directory to the CARLISLE repository

B. Initialize Pipeline

bash ./path/to/dir/carlisle --runmode=init --workdir=/path/to/output/dir\n
"},{"location":"user-guide/test-info/#52-about-the-test-data","title":"5.2 About the test data","text":"

This test data consists of sub-sampled inputs, consisting of two pairs of two replicate samples and one control. The reference to be used is hg38.

"},{"location":"user-guide/test-info/#53-submit-the-test-data","title":"5.3 Submit the test data","text":"

Test data is included in the .test directory as well as the config directory.

A Run the test command to prepare the data, perform a dry-run and submit to the cluster

bash ./path/to/dir/carlisle --runmode=testrun --workdir=/path/to/output/dir\n
  • An expected output for the testrun is as follows:
Job stats:\njob                              count    min threads    max threads\n-----------------------------  -------  -------------  -------------\nDESeq                                  24              1              1\nalign                                   9             56             56\nalignstats                              9              2              2\nall                                     1              1              1\nbam2bg                                  9              4              4\ncreate_contrast_data_files             24              1              1\ncreate_contrast_peakcaller_files       12              1              1\ncreate_reference                        1             32             32\ncreate_replicate_sample_table           1              1              1\ndiffbb                                 24              1              1\nfilter                                 18              2              2\nfindMotif                              96              6              6\ngather_alignstats                       1              1              1\ngo_enrichment                          12              1              1\ngopeaks_broad                          16              2              2\ngopeaks_narrow                         16              2              2\nmacs2_broad                            16              2              2\nmacs2_narrow                           16              2              2\nmake_counts_matrix                     24              1              1\nmultiqc                                 2              1              1\nqc_fastqc                               9              1              1\nrose                                   96              2              2\nseacr_relaxed                          16              2              2\nseacr_stringent                        16              2              2\nspikein_assessment                      1              1              1\ntrim                                    9             56             56\ntotal                                 478              1             56\n
"},{"location":"user-guide/test-info/#54-review-outputs","title":"5.4 Review outputs","text":"

Review the expected outputs on the Output page. If there are errors, review and performing stesp described on the Troubleshooting page as needed.

"},{"location":"user-guide/troubleshooting/","title":"Troubleshooting","text":"

This should include basic information on how to troubleshoot the pipeline. It should also include the main pipeliner developers contact information for users to utilize, as needed.

"},{"location":"user-guide/troubleshooting/#troubleshooting","title":"Troubleshooting","text":"

Recommended steps to troubleshoot the pipeline.

"},{"location":"user-guide/troubleshooting/#11-email","title":"1.1 Email","text":"

Check your email for an email regarding pipeline failure. You will receive an email from slurm@biowulf.nih.gov with the subject: Slurm Job_id=[#] Name=CARLISLE Failed, Run time [time], FAILED, ExitCode 1

"},{"location":"user-guide/troubleshooting/#12-review-the-log-files","title":"1.2 Review the log files","text":"

Review the logs in two ways:

  1. Review the master slurm file: This file will be found in the /path/to/results/dir/ and titled slurm-[jobid].out. Reviewing this file will tell you what rule errored, and for any local SLURM jobs, provide error details
  2. Review the individual rule log files: After reviewing the master slurm-file, review the specific rules that failed within the /path/to/results/dir/logs/. Each rule will include a .err and .out file, with the following formatting: {rulename}.{masterjobID}.{individualruleID}.{wildcards from the rule}.{out or err}
"},{"location":"user-guide/troubleshooting/#13-restart-the-run","title":"1.3 Restart the run","text":"

After addressing the issue, unlock the output directory, perform another dry-run and check the status of the pipeline, then resubmit to the cluster.

#unlock dir\nbash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=unlock --workdir=/path/to/output/dir\n\n#perform dry-run\nbash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=dryrun --workdir=/path/to/output/dir\n\n#submit to cluster\nbash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=run --workdir=/path/to/output/dir\n
"},{"location":"user-guide/troubleshooting/#14-contact-information","title":"1.4 Contact information","text":"

If after troubleshooting, the error cannot be resolved, or if a bug is found, please create an issue and send and email to Samantha Chill.

"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..0f8724ef --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 00000000..b0aa1197 Binary files /dev/null and b/sitemap.xml.gz differ diff --git a/user-guide/examples/mm10_report.html b/user-guide/examples/mm10_report.html new file mode 100644 index 00000000..97095649 --- /dev/null +++ b/user-guide/examples/mm10_report.html @@ -0,0 +1,1038 @@ + + + + + + + + + + + [silly_wescoff] Nextflow Workflow Report + + + + + + + +
+
+ +

Nextflow workflow report

+

[silly_wescoff] (resumed run)

+ + +
+ Workflow execution completed successfully. One or more tasks reported an error condition. +
+ + +
+
Run times
+
+ 06-Sep-2023 09:35:32 - 06-Sep-2023 10:35:16 + (duration: 59m 44s) +
+ +
+
+
  33 succeeded  
+
  95 cached  
+
  1 ignored  
+
  1 failed  
+
+
+ +
Nextflow command
+
nextflow run /vf/users/CCBR/projects/techDev/CHAMPAGNE/main.nf -c nextflow.config -profile test_mm10,singularity -resume
+
+ +
+
CPU-Hours
+
126.5 (76.4% cached, 0.6% failed)
+ +
Launch directory
+
/vf/users/CCBR/projects/techDev/CHAMPAGNE
+ +
Work directory
+
/vf/users/CCBR/projects/techDev/CHAMPAGNE/work
+ +
Project directory
+
/vf/users/CCBR/projects/techDev/CHAMPAGNE
+ + +
Script name
+
main.nf
+ + + +
Script ID
+
eaa9f4ed7f801a300888341d7ab80d18
+ + +
Workflow session
+
566be568-c63d-4177-a62f-42d83e30dbeb
+ + + +
Workflow profile
+
test_mm10,singularity
+ + + +
Nextflow version
+
version 23.04.1, build 5866 (15-04-2023 06:51 UTC)
+
+
+
+ +
+

Resource Usage

+

These plots give an overview of the distribution of resource usage for each process.

+ +

CPU

+ +
+
+
+
+
+
+
+ +
+ +

Memory

+ +
+
+
+
+
+
+
+
+
+
+
+ +

Job Duration

+ +
+
+
+
+
+
+
+
+ +

I/O

+ +
+
+
+
+
+
+
+
+
+ +
+
+

Tasks

+

This table shows information about each task in the workflow. Use the search box on the right + to filter rows for specific values. Clicking headers will sort the table by that value and + scrolling side to side will reveal more columns.

+
+ + +
+
+
+
+
+ +
+ (tasks table omitted because the dataset is too big) +
+
+ +
+
+ Generated by Nextflow, version 23.04.1 +
+
+ + + + + diff --git a/user-guide/examples/multiqc_report.html b/user-guide/examples/multiqc_report.html new file mode 100644 index 00000000..6d44524f --- /dev/null +++ b/user-guide/examples/multiqc_report.html @@ -0,0 +1,7872 @@ + + + + + + + + + + + + + +MultiQC Report + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

+ + + + + + +

+ +

Loading report..

+ +
+ +
+
+ + + +
+ + + + +
+ + + + +
+

+ + Highlight Samples +

+ +
+ + + +
+

+ Regex mode off + + +

+
    +
    + + +
    +

    + + Rename Samples +

    + +
    + + + +
    +

    Click here for bulk input.

    +
    +

    Paste two columns of a tab-delimited table here (eg. from Excel).

    +

    First column should be the old name, second column the new name.

    +
    + + +
    +
    +

    + Regex mode off + + +

    +
      +
      + + +
      +

      + + Show / Hide Samples +

      + +
      +
      + +
      +
      + +
      +
      + + +
      +
      + +

      + Regex mode off + + +

      +
        +
        + + +
        +

        Export Plots

        +
        + +
        +
        +
        +
        +
        + + px +
        +
        +
        +
        + + px +
        +
        +
        +
        +
        + +
        +
        + +
        +
        +
        +
        + +
        +
        +
        + + X +
        +
        +
        +
        + +
        +

        Download the raw data used to create the plots in this report below:

        +
        +
        + +
        +
        + +
        +
        + +

        Note that additional data was saved in multiqc_data when this report was generated.

        + +
        +
        +
        + +
        +
        Choose Plots
        + + +
        + +
        + +

        If you use plots from MultiQC in a publication or presentation, please cite:

        +
        + MultiQC: Summarize analysis results for multiple tools and samples in a single report
        + Philip Ewels, Måns Magnusson, Sverker Lundin and Max Käller
        + Bioinformatics (2016)
        + doi: 10.1093/bioinformatics/btw354
        + PMID: 27312411 +
        +
        +
        + + +
        +

        Save Settings

        +

        You can save the toolbox settings for this report to the browser.

        +
        + + +
        +
        + +

        Load Settings

        +

        Choose a saved report profile from the dropdown box below:

        +
        +
        + +
        +
        + + + + +
        +
        +
        + + +
        +

        Tool Citations

        +

        Please remember to cite the tools that you use in your analysis.

        +

        To help with this, you can download publication details of the tools mentioned in this report:

        +

        +

        +
        + + +
        +

        About MultiQC

        +

        This report was generated using MultiQC, version 1.15

        +

        You can see a YouTube video describing how to use MultiQC reports here: + https://youtu.be/qPbIlO_KWN0

        +

        For more information about MultiQC, including other videos and + extensive documentation, please visit http://multiqc.info

        +

        You can report bugs, suggest improvements and find the source code for MultiQC on GitHub: + https://github.com/ewels/MultiQC

        +

        MultiQC is published in Bioinformatics:

        +
        + MultiQC: Summarize analysis results for multiple tools and samples in a single report
        + Philip Ewels, Måns Magnusson, Sverker Lundin and Max Käller
        + Bioinformatics (2016)
        + doi: 10.1093/bioinformatics/btw354
        + PMID: 27312411 +
        +
        + +
        + +
        + + +
        + + + +

        + + + + +

        + + + +

        + A modular tool to aggregate results from bioinformatics analyses across many samples into a single report. +

        + + + +
        This report has been generated by CCBR/CHAMPAGNE. For information about how to interpret these results, please see the documentation. +
        + + + + + + + + + +
        +

        Report + + generated on 2023-09-06, 17:28 EDT + + + based on data in: + + /lscratch/7526425/nxf.FBQXPcOVYD

        + + +
        + + + + + + + +
        + + + + + + + + +
        +

        General Statistics

        + + + + + + + + + + + Showing 32/32 rows and 7/12 columns. + +
        +
        + +
        Sample Name% Dups% GCM SeqsM Reads MappedFrag LengthNSCRSC
        CTCF_ChIP_MEF_p20_1.aligned.filtered.dedup.bam.flagstat
        32.9
        CTCF_ChIP_MEF_p20_1.spp.out
        135
        1.73
        2.84
        CTCF_ChIP_MEF_p20_1.trimmed.fastq.gz
        19.1%
        44%
        48.5
        CTCF_ChIP_MEF_p20_2.aligned.filtered.dedup.bam.flagstat
        13.6
        CTCF_ChIP_MEF_p20_2.spp.out
        110
        3.39
        2.45
        CTCF_ChIP_MEF_p20_2.trimmed.fastq.gz
        23.5%
        51%
        36.6
        CTCF_ChIP_macrophage_p20_1.aligned.filtered.dedup.bam.flagstat
        38.1
        CTCF_ChIP_macrophage_p20_1.spp.out
        130
        1.51
        2.66
        CTCF_ChIP_macrophage_p20_1.trimmed.fastq.gz
        19.3%
        45%
        59.8
        CTCF_ChIP_macrophage_p20_2.aligned.filtered.dedup.bam.flagstat
        10.6
        CTCF_ChIP_macrophage_p20_2.spp.out
        115
        2.08
        2.12
        CTCF_ChIP_macrophage_p20_2.trimmed.fastq.gz
        9.3%
        45%
        22.3
        CTCF_ChIP_macrophage_p3_1.aligned.filtered.dedup.bam.flagstat
        31.1
        CTCF_ChIP_macrophage_p3_1.spp.out
        135
        1.53
        2.65
        CTCF_ChIP_macrophage_p3_1.trimmed.fastq.gz
        17.2%
        43%
        50.2
        CTCF_ChIP_macrophage_p3_2.aligned.filtered.dedup.bam.flagstat
        16.0
        CTCF_ChIP_macrophage_p3_2.spp.out
        105
        1.93
        2.57
        CTCF_ChIP_macrophage_p3_2.trimmed.fastq.gz
        26.0%
        51%
        44.4
        SRR3081748_1.fastq.gz
        20.2%
        45%
        60.4
        SRR3081749_1.fastq.gz
        10.0%
        45%
        22.7
        SRR3081750_1.fastq.gz
        17.6%
        44%
        50.5
        SRR3081751_1.fastq.gz
        36.2%
        51%
        51.4
        SRR3081752_1.fastq.gz
        19.4%
        44%
        48.7
        SRR3081753_1.fastq.gz
        24.5%
        51%
        36.9
        SRR3081772_1.fastq.gz
        14.0%
        39%
        27.6
        SRR3081773_1.fastq.gz
        16.9%
        39%
        38.2
        WCE_p20.aligned.filtered.dedup.bam.flagstat
        27.6
        WCE_p20.spp.out
        0
        1.01
        1.00
        WCE_p20.trimmed.fastq.gz
        16.5%
        39%
        38.0
        WCE_p3.aligned.filtered.dedup.bam.flagstat
        20.9
        WCE_p3.spp.out
        145
        1.01
        1.10
        WCE_p3.trimmed.fastq.gz
        13.6%
        39%
        27.5
        + + +
        + + + + + + +
        + + +
        +

        ChIP-specific QC metrics

        +

        Encode3 standards

        + +Usable fragments (A fragment corresponds to a read mapping to one location in the genome.) +If single-end, one read is considered a fragment. If paired-end, one pair is considered a fragment.
        +Usable fragments for TF/narrow histones: concerning <10M, acceptable 10-20M, ideal >20M.
        +Usable fragments for broad histones: concerning <20M, acceptable 20-40M, ideal >40M.
        +
          +
        • NRF: Number of distinct mapping reads after removing duplicates/total number of reads.
        • +
        • PBC1: Number of genomic locations where exactly one read maps uniquely/number of distinct genomic locations to which one read maps uniquely.
        • +
        • PBC2: Number of genomic locations where only one read maps uniquely/number of genomic locations where two reads map uniquely
        • +
        • Concerning(severe bottlenecking): NRF < 0.5, Acceptable: 0.5 < NRF < 0.8, Ideal (no bottlenecking): NRF > 0.9
        • +
        +
        +

        phantompeakqualtools standards

        +
          +
        • NSC: cross-correlation value/minimum cross-correlation
          + Optimal NSC: > 1.1, Okay NSC: 1.05 - 1.1. Low NSC means low signal to noise or very few peaks (biological or technical).
        • +
        • RSC: (cross-correlation value - minimum cross-correlation) / (correlation at phantom peak - minimum cross-correlation)
          + Optimal RSC: > 1, Okay RSC: 0.8-1. Low RSC means low signal to noise caused by: poor quality ChIP, + low read sequence quality, shallow sequencing depth, or few peaks.
          QualityTag: -2: very low, 2: very high
        • +
        +.

        + + + + +
        + + + + +
        + + + + + + + + + Showing 8/8 rows and 8/10 columns. + +
        +
        + +
        SampleNameNUniqMappedReadsNRFPBC1PBC2FragmentLengthNSCRSCQtag
        CTCF_ChIP_MEF_p20_2
        31099296
        0.8
        0.9
        7.0
        200.0
        1.93
        2.6
        2.0
        CTCF_ChIP_MEF_p20_1
        15983324
        0.8
        0.8
        4.4
        200.0
        2.08
        2.1
        2.0
        CTCF_ChIP_macrophage_p20_2
        38105036
        0.9
        0.9
        12.9
        200.0
        1.53
        2.7
        2.0
        CTCF_ChIP_macrophage_p20_1
        32917124
        0.8
        0.9
        7.9
        200.0
        3.39
        2.4
        2.0
        CTCF_ChIP_macrophage_p3_1
        10554895
        0.9
        0.9
        8.2
        200.0
        1.73
        2.8
        2.0
        WCE_p20
        13607337
        0.9
        0.9
        18.0
        200.0
        1.51
        2.7
        2.0
        CTCF_ChIP_macrophage_p3_2
        27568678
        0.7
        0.8
        4.2
        200.0
        1.01
        1.0
        1.0
        WCE_p3
        20856684
        NA
        NA
        NA
        200.0
        1.01
        1.1
        1.0
        + +
        + + + +
        + + +
        + + +
        +
        + + + +
        + + +
        +

        FastQC

        +

        FastQC is a quality control tool for high throughput sequence data, written by Simon Andrews at the Babraham Institute in Cambridge.

        + + + + +
        + +

        + Sequence Counts + + + +

        + +

        Sequence counts for each sample. Duplicate read counts are an estimate only.

        + + +
        +

        This plot show the total number of reads, broken down into unique and duplicate +if possible (only more recent versions of FastQC give duplicate info).

        +

        You can read more about duplicate calculation in the +FastQC documentation. +A small part has been copied here for convenience:

        +

        Only sequences which first appear in the first 100,000 sequences +in each file are analysed. This should be enough to get a good impression +for the duplication levels in the whole file. Each sequence is tracked to +the end of the file to give a representative count of the overall duplication level.

        +

        The duplication detection requires an exact sequence match over the whole length of +the sequence. Any reads over 75bp in length are truncated to 50bp for this analysis.

        +
        + +
        + + +
        +
        loading..
        +
        + + +
        +
        + + +
        + + + + + +
        + +

        + Sequence Quality Histograms + + + +

        + +

        The mean quality value across each base position in the read.

        + + +
        +

        To enable multiple samples to be plotted on the same graph, only the mean quality +scores are plotted (unlike the box plots seen in FastQC reports).

        +

        Taken from the FastQC help:

        +

        The y-axis on the graph shows the quality scores. The higher the score, the better +the base call. The background of the graph divides the y axis into very good quality +calls (green), calls of reasonable quality (orange), and calls of poor quality (red). +The quality of calls on most platforms will degrade as the run progresses, so it is +common to see base calls falling into the orange area towards the end of a read.

        +
        + +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Per Sequence Quality Scores + + + +

        + +

        The number of reads with average quality scores. Shows if a subset of reads has poor quality.

        + + +
        +

        From the FastQC help:

        +

        The per sequence quality score report allows you to see if a subset of your +sequences have universally low quality values. It is often the case that a +subset of sequences will have universally poor quality, however these should +represent only a small percentage of the total sequences.

        +
        + +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Per Base Sequence Content + + + +

        + +

        The proportion of each base position for which each of the four normal DNA bases has been called.

        + + +
        +

        To enable multiple samples to be shown in a single plot, the base composition data +is shown as a heatmap. The colours represent the balance between the four bases: +an even distribution should give an even muddy brown colour. Hover over the plot +to see the percentage of the four bases under the cursor.

        +

        To see the data as a line plot, as in the original FastQC graph, click on a sample track.

        +

        From the FastQC help:

        +

        Per Base Sequence Content plots out the proportion of each base position in a +file for which each of the four normal DNA bases has been called.

        +

        In a random library you would expect that there would be little to no difference +between the different bases of a sequence run, so the lines in this plot should +run parallel with each other. The relative amount of each base should reflect +the overall amount of these bases in your genome, but in any case they should +not be hugely imbalanced from each other.

        +

        It's worth noting that some types of library will always produce biased sequence +composition, normally at the start of the read. Libraries produced by priming +using random hexamers (including nearly all RNA-Seq libraries) and those which +were fragmented using transposases inherit an intrinsic bias in the positions +at which reads start. This bias does not concern an absolute sequence, but instead +provides enrichement of a number of different K-mers at the 5' end of the reads. +Whilst this is a true technical bias, it isn't something which can be corrected +by trimming and in most cases doesn't seem to adversely affect the downstream +analysis.

        +
        + +
        +
        +
        + + Click a sample row to see a line plot for that dataset. +
        +
        Rollover for sample name
        + +
        + Position: - +
        %T: -
        +
        %C: -
        +
        %A: -
        +
        %G: -
        +
        +
        +
        + +
        +
        +
        +
        + + + +
        +
        + + + + + + +
        + +

        + Per Sequence GC Content + + + +

        + +

        The average GC content of reads. Normal random library typically have a + roughly normal distribution of GC content.

        + + +
        +

        From the FastQC help:

        +

        This module measures the GC content across the whole length of each sequence +in a file and compares it to a modelled normal distribution of GC content.

        +

        In a normal random library you would expect to see a roughly normal distribution +of GC content where the central peak corresponds to the overall GC content of +the underlying genome. Since we don't know the the GC content of the genome the +modal GC content is calculated from the observed data and used to build a +reference distribution.

        +

        An unusually shaped distribution could indicate a contaminated library or +some other kinds of biased subset. A normal distribution which is shifted +indicates some systematic bias which is independent of base position. If there +is a systematic bias which creates a shifted normal distribution then this won't +be flagged as an error by the module since it doesn't know what your genome's +GC content should be.

        +
        + +
        + + +
        + +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Per Base N Content + + + +

        + +

        The percentage of base calls at each position for which an N was called.

        + + +
        +

        From the FastQC help:

        +

        If a sequencer is unable to make a base call with sufficient confidence then it will +normally substitute an N rather than a conventional base call. This graph shows the +percentage of base calls at each position for which an N was called.

        +

        It's not unusual to see a very low proportion of Ns appearing in a sequence, especially +nearer the end of a sequence. However, if this proportion rises above a few percent +it suggests that the analysis pipeline was unable to interpret the data well enough to +make valid base calls.

        +
        + +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Sequence Length Distribution + +

        + +

        The distribution of fragment sizes (read lengths) found. + See the FastQC help

        + + +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Sequence Duplication Levels + + + +

        + +

        The relative level of duplication found for every sequence.

        + + +
        +

        From the FastQC Help:

        +

        In a diverse library most sequences will occur only once in the final set. +A low level of duplication may indicate a very high level of coverage of the +target sequence, but a high level of duplication is more likely to indicate +some kind of enrichment bias (eg PCR over amplification). This graph shows +the degree of duplication for every sequence in a library: the relative +number of sequences with different degrees of duplication.

        +

        Only sequences which first appear in the first 100,000 sequences +in each file are analysed. This should be enough to get a good impression +for the duplication levels in the whole file. Each sequence is tracked to +the end of the file to give a representative count of the overall duplication level.

        +

        The duplication detection requires an exact sequence match over the whole length of +the sequence. Any reads over 75bp in length are truncated to 50bp for this analysis.

        +

        In a properly diverse library most sequences should fall into the far left of the +plot in both the red and blue lines. A general level of enrichment, indicating broad +oversequencing in the library will tend to flatten the lines, lowering the low end +and generally raising other categories. More specific enrichments of subsets, or +the presence of low complexity contaminants will tend to produce spikes towards the +right of the plot.

        +
        + +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Overrepresented sequences + + + +

        + +

        The total amount of overrepresented sequences found in each library.

        + + +
        +

        FastQC calculates and lists overrepresented sequences in FastQ files. It would not be +possible to show this for all samples in a MultiQC report, so instead this plot shows +the number of sequences categorized as over represented.

        +

        Sometimes, a single sequence may account for a large number of reads in a dataset. +To show this, the bars are split into two: the first shows the overrepresented reads +that come from the single most common sequence. The second shows the total count +from all remaining overrepresented sequences.

        +

        From the FastQC Help:

        +

        A normal high-throughput library will contain a diverse set of sequences, with no +individual sequence making up a tiny fraction of the whole. Finding that a single +sequence is very overrepresented in the set either means that it is highly biologically +significant, or indicates that the library is contaminated, or not as diverse as you expected.

        +

        FastQC lists all of the sequences which make up more than 0.1% of the total. +To conserve memory only sequences which appear in the first 100,000 sequences are tracked +to the end of the file. It is therefore possible that a sequence which is overrepresented +but doesn't appear at the start of the file for some reason could be missed by this module.

        +
        + +
        +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Adapter Content + + + +

        + +

        The cumulative percentage count of the proportion of your + library which has seen each of the adapter sequences at each position.

        + + +
        +

        Note that only samples with ≥ 0.1% adapter contamination are shown.

        +

        There may be several lines per sample, as one is shown for each adapter +detected in the file.

        +

        From the FastQC Help:

        +

        The plot shows a cumulative percentage count of the proportion +of your library which has seen each of the adapter sequences at each position. +Once a sequence has been seen in a read it is counted as being present +right through to the end of the read so the percentages you see will only +increase as the read length goes on.

        +
        + +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Status Checks + + + +

        + +

        Status for each FastQC section showing whether results seem entirely normal (green), +slightly abnormal (orange) or very unusual (red).

        + + +
        +

        FastQC assigns a status for each section of the report. +These give a quick evaluation of whether the results of the analysis seem +entirely normal (green), slightly abnormal (orange) or very unusual (red).

        +

        It is important to stress that although the analysis results appear to give a pass/fail result, +these evaluations must be taken in the context of what you expect from your library. +A 'normal' sample as far as FastQC is concerned is random and diverse. +Some experiments may be expected to produce libraries which are biased in particular ways. +You should treat the summary evaluations therefore as pointers to where you should concentrate +your attention and understand why your library may not look random and diverse.

        +

        Specific guidance on how to interpret the output of each module can be found in the relevant +report section, or in the FastQC help.

        +

        In this heatmap, we summarise all of these into a single heatmap for a quick overview. +Note that not all FastQC sections have plots in MultiQC reports, but all status checks +are shown in this heatmap.

        +
        + +
        +
        +
        + +
        +
        +
        + + + +
        +
        + + + +
        +
        +
        +
        + loading.. +
        +
        +
        +
        + + + +
        + + + +
        +
        + + + +
        + + +
        +

        Samtools

        +

        Samtools is a suite of programs for interacting with high-throughput sequencing data.DOI: 10.1093/bioinformatics/btp352.

        + + + + +
        + +

        + Samtools Flagstat + +

        + +

        This module parses the output from samtools flagstat. All numbers in millions.

        + + +
        +
        loading..
        +
        + + +
        +
        + + +
        + + + + + +
        + +

        + XY counts + +

        + + + + +
        + + +
        +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Mapped reads per contig + +

        + +

        The samtools idxstats tool counts the number of mapped reads per chromosome / contig. Chromosomes with < 0.1% of the total aligned reads are omitted from this plot.

        + + +
        + + +
           
        + + + +
        + +
        loading..
        +
        + + + +
        + + + +
        +
        + + + +
        + + +
        +

        deepTools

        +

        deepTools is a suite of tools to process and analyze deep sequencing data.DOI: 10.1093/nar/gkw257.

        + + + + +
        + +

        + Correlation heatmap + +

        + +

        Pairwise correlations of samples based on distribution of sequence reads

        + + +
        +
        +
        + +
        +
        +
        + + + +
        +
        + + + +
        +
        +
        +
        + loading.. +
        +
        +
        +
        + + +
        +
        + + +
        + + + + + +
        + +

        + PCA plot + +

        + +

        PCA plot with the top two principal components calculated based on genome-wide distribution of sequence reads

        + + +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Fingerprint plot + +

        + +

        Signal fingerprint according to plotFingerprint

        + + +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Fingerprint quality metrics + +

        + +

        Various quality metrics returned by plotFingerprint

        + + +
        loading..
        +
        + + +
        +
        + + + + + + +
        + +

        + Read Distribution Profile after Annotation + +

        + +

        Accumulated view of the distribution of sequence reads related to the closest annotated gene. +All annotated genes have been normalized to the same size.

        + + +
        loading..
        +
        + + + +
        + + + +
        +
        + + + + + +
        + + + + + + + + + + + + + + + + diff --git a/user-guide/getting-started/index.html b/user-guide/getting-started/index.html new file mode 100644 index 00000000..8f669881 --- /dev/null +++ b/user-guide/getting-started/index.html @@ -0,0 +1,5 @@ + 1. Getting Started - CHAMPAGNE

        This should set the stage for all of the pipeline requirements. Examples are listed below.

        Overview

        The CARLISLE github repository is stored locally, and will be used for project deployment. Multiple projects can be deployed from this one point simultaneously, without concern.

        1. Getting Started

        1.1 Introduction

        The CARLISLE Pipelie beings with raw FASTQ files and performs trimming followed by alignment using BOWTIE2. Data is then normalized through either the use of an user-species species (IE E.Coli) spike-in control or through the determined library size. Peaks are then called using MACS2, SEACR, and GoPEAKS with various options selected by the user. Peaks are then annotated, and summarized into reports. If designated, differential analysis is performed using DESEQ2. QC reports are also generated with each project using FASTQC and MULTIQC. Annotations are added using HOMER and ROSE. GSEA Enrichment analysis predictions are added using CHIPENRICH.

        The following are sub-commands used within CARLISLE:

        • initialize: initialize the pipeline
        • dryrun: predict the binding of peptides to any MHC molecule
        • cluster: execute the pipeline on the Biowulf HPC
        • local: execute a local, interactive, session
        • git: execute GitHub actions
        • unlock: unlock directory
        • DAG: create DAG report
        • report: create SNAKEMAKE report
        • testrun: copies test manifests and files to WORKDIR

        1.2 Setup Dependencies

        CARLISLE has several dependencies listed below. These dependencies can be installed by a sysadmin. All dependencies will be automatically loaded if running from Biowulf.

        • bedtools: "bedtools/2.30.0"
        • bedops: "bedops/2.4.40"

        1.3 Login to the cluster

        CARLISLE has been exclusively tested on Biowulf HPC. Login to the cluster's head node and move into the pipeline location.

        # ssh into cluster's head node
        +ssh -Y $USER@biowulf.nih.gov
        +

        1.4 Load an interactive session

        An interactive session should be started before performing any of the pipeline sub-commands, even if the pipeline is to be executed on the cluster.

        # Grab an interactive node
        +sinteractive --time=12:00:00 --mem=8gb  --cpus-per-task=4 --pty bash
        +

        Last update: 2023-09-07
        \ No newline at end of file diff --git a/user-guide/output/index.html b/user-guide/output/index.html new file mode 100644 index 00000000..1beacbcf --- /dev/null +++ b/user-guide/output/index.html @@ -0,0 +1,56 @@ + 4. Expected Output - CHAMPAGNE

        This should include all pertitant information about output files, including extensions that differentiate files. An example is provided below.

        4. Expected Outputs

        The following directories are created under the WORKDIR/results directory:

        • alignment_stats: this directory include information on the alignment of each sample
        • peaks: this directory contains a sub-directory that relates to the quality threshold used.
        • quality threshold
          • contrasts: this directory includes the contrasts for each line listed in the contrast manifest
          • peak_caller: this directory includes all peak calls from each peak_caller (SEACR, MACS2, GOPEAKS) for each sample
          • annotation
            • go_enrichment: this directory includes gene set enrichment pathway predictions
            • homer: this directory includes the annotation output from HOMER
            • rose: this directory includes the annotation output from ROSE
        ├── alignment_stats
        +├── bam
        +├── peaks
        +│   ├── 0.05
        +│   │   ├── contrasts
        +│   │   │   ├── contrast_id1.dedup_status
        +│   │   │   └── contrast_id2.dedup_status
        +│   │   ├── gopeaks
        +│   │   │   ├── annotation
        +│   │   │   │   ├── go_enrichment
        +│   │   │   │   │   ├── contrast_id1.dedup_status.go_enrichment_tables
        +│   │   │   │   │   └── contrast_id2.dedup_status.go_enrichment_html_report
        +│   │   │   │   ├── homer
        +│   │   │   │   │   ├── replicate_id1_vs_control_id.dedup_status.gopeaks_broad.motifs
        +│   │   │   │   │   │   ├── homerResults
        +│   │   │   │   │   │   └── knownResults
        +│   │   │   │   │   ├── replicate_id1_vs_control_id.dedup_status.gopeaks_narrow.motifs
        +│   │   │   │   │   │   ├── homerResults
        +│   │   │   │   │   │   └── knownResults
        +│   │   │   │   │   ├── replicate_id2_vs_control_id.dedup_status.gopeaks_broad.motifs
        +│   │   │   │   │   │   ├── homerResults
        +│   │   │   │   │   │   └── knownResults
        +│   │   │   │   │   ├── replicate_id2_vs_control_id.dedup_status.gopeaks_narrow.motifs
        +│   │   │   │   │   │   ├── homerResults
        +│   │   │   │   │   │   └── knownResults
        +│   │   │   │   └── rose
        +│   │   │   │       ├── replicate_id1_vs_control_id.dedup_status.gopeaks_broad.12500
        +│   │   │   │       ├── replicate_id1_vs_control_id.dedup_status.gopeaks_narrow.12500
        +│   │   │   │       ├── replicate_id2_vs_control_id.dedup_status.dedup.gopeaks_broad.12500
        +│   │   │   │       ├── replicate_id2_vs_control_id.dedup_status.dedup.gopeaks_narrow.12500
        +│   │   │   └── peak_output
        +│   │   ├── macs2
        +│   │   │   ├── annotation
        +│   │   │   │   ├── go_enrichment
        +│   │   │   │   │   ├── contrast_id1.dedup_status.go_enrichment_tables
        +│   │   │   │   │   └── contrast_id2.dedup_status.go_enrichment_html_report
        +│   │   │   │   ├── homer
        +│   │   │   │   │   ├── replicate_id1_vs_control_id.dedup_status.macs2_narrow.motifs
        +│   │   │   │   │   │   ├── homerResults
        +│   │   │   │   │   │   └── knownResults
        +│   │   │   │   │   ├── replicate_id1_vs_control_id.dedup_status.macs2_broad.motifs
        +│   │   │   │   │   │   ├── homerResults
        +│   │   │   │   │   │   └── knownResults
        +│   │   │   │   │   ├── replicate_id2_vs_control_id.dedup_status.macs2_narrow.motifs
        +│   │   │   │   │   │   ├── homerResults
        +│   │   │   │   │   │   └── knownResults
        +│   │   │   │   │   ├── replicate_id2_vs_control_id.dedup_status.macs2_broad.motifs
        +│   │   │   │   │   │   ├── homerResults
        +│   │   │   │   │   │   └── knownResults
        +│   │   │   │   └── rose
        +│   │   │   │       ├── replicate_id1_vs_control_id.dedup_status.macs2_broad.12500
        +│   │   │   │       ├── replicate_id1_vs_control_id.dedup_status.macs2_narrow.12500
        +│   │   │   │       ├── replicate_id2_vs_control_id.dedup_status.macs2_broad.12500
        +│   │   │   │       ├── replicate_id2_vs_control_id.dedup_status.macs2_narrow.12500
        +│   │   │   └── peak_output
        +

        Last update: 2023-09-07
        \ No newline at end of file diff --git a/user-guide/preparing-files/index.html b/user-guide/preparing-files/index.html new file mode 100644 index 00000000..5f5117be --- /dev/null +++ b/user-guide/preparing-files/index.html @@ -0,0 +1,2 @@ + 2. Preparing Files - CHAMPAGNE

        This should describe any input files needed, including config files, manifest files, and sample files. An example is provided below.

        2. Preparing Files

        The pipeline is controlled through editing configuration and manifest files. Defaults are found in the /WORKDIR/config and /WORKDIR/manifest directories, after initialization.

        2.1 Configs

        The configuration files control parameters and software of the pipeline. These files are listed below:

        • config/config.yaml
        • resources/cluster.yaml
        • resources/tools.yaml

        2.1.1 Cluster Config

        The cluster configuration file dictates the resources to be used during submission to Biowulf HPC. There are two different ways to control these parameters - first, to control the default settings, and second, to create or edit individual rules. These parameters should be edited with caution, after significant testing.

        2.1.2 Tools Config

        The tools configuration file dictates the version of each software or program that is being used in the pipeline.

        2.1.3 Config YAML

        There are several groups of parameters that are editable for the user to control the various aspects of the pipeline. These are :

        • Folders and Paths
        • These parameters will include the input and output files of the pipeline, as well as list all manifest names.
        • User parameters
        • These parameters will control the pipeline features. These include thresholds and whether to perform processes.
        • References
        • These parameters will control the location of index files, spike-in references, adaptors and species calling information.

        2.1.3.1 User Parameters

        2.1.3.1.1 Duplication Status

        Users can select duplicated peaks (dedup) or non-deduplicated peaks (no_dedup) through the user parameter.

        dupstatus: "dedup, no_dedup"
        +
        2.1.3.1.2 Macs2 additional option

        MACS2 can be run with or without the control. adding a control will increase peak specificity Selecting "Y" for the macs2_control will run the paired control sample provided in the sample manifest

        2.1.3.2 References

        Additional reference files may be added to the pipeline, if other species were to be used.

        The absolute file paths which must be included are:

        1. fa: "/path/to/species.fa"
        2. blacklist: "/path/to/blacklistbed/species.bed"

        The following information must be included:

        1. regions: "list of regions to be included; IE chr1 chr2 chr3"
        2. macs2_g: "macs2 genome shorthand; IE mm IE hs"

        2.2 Preparing Manifests

        There are two manifests, one which required for all pipelines and one that is only required if running a differential analysis. These files describe information on the samples and desired contrasts. The paths of these files are defined in the snakemake_config.yaml file. These files are:

        • samplemanifest
        • contrasts

        2.2.1 Samples Manifest (REQUIRED)

        This manifest will include information to sample level information. It includes the following column headers:

        • sampleName: the sample name WITHOUT replicate number (IE "SAMPLE")
        • replicateNumber: the sample replicate number (IE "1")
        • isControl: whether the sample should be identified as a control (IE "Y")
        • controlName: the name of the control to use for this sample (IE "CONTROL")
        • controlReplicateNumber: the replicate number of the control to use for this sample (IE "1")
        • path_to_R1: the full path to R1 fastq file (IE "/path/to/sample1.R1.fastq")
        • path_to_R2: the full path to R1 fastq file (IE "/path/to/sample2.R2.fastq")

        An example sampleManifest file is shown below:

        sampleName replicateNumber isControl controlName controlReplicateNumber path_to_R1 path_to_R2
        53_H3K4me3 1 N HN6_IgG_rabbit_negative_control 1 PIPELINE_HOME/.test/53_H3K4me3_1.R1.fastq.gz PIPELINE_HOME/.test/53_H3K4me3_1.R2.fastq.gz
        53_H3K4me3 2 N HN6_IgG_rabbit_negative_control 1 PIPELINE_HOME/.test/53_H3K4me3_2.R1.fastq.gz PIPELINE_HOME/.test/53_H3K4me3_2.R2.fastq.gz
        HN6_H3K4me3 1 N HN6_IgG_rabbit_negative_control 1 PIPELINE_HOME/.test/HN6_H3K4me3_1.R1.fastq.gz PIPELINE_HOME/.test/HN6_H3K4me3_1.R2.fastq.gz
        HN6_H3K4me3 2 N HN6_IgG_rabbit_negative_control 1 PIPELINE_HOME/.test/HN6_H3K4me3_2.R1.fastq.gz PIPELINE_HOME/.test/HN6_H3K4me3_2.R2.fastq.gz
        HN6_IgG_rabbit_negative_control 1 Y - - PIPELINE_HOME/.test/HN6_IgG_rabbit_negative_control_1.R1.fastq.gz PIPELINE_HOME/.test/HN6_IgG_rabbit_negative_control_1.R2.fastq.gz

        Last update: 2023-09-07
        \ No newline at end of file diff --git a/user-guide/run/index.html b/user-guide/run/index.html new file mode 100644 index 00000000..8fb1165a --- /dev/null +++ b/user-guide/run/index.html @@ -0,0 +1,17 @@ + 3. Running the Pipeline - CHAMPAGNE

        This should include all information about the various run commands provided within the pipeline.

        3. Running the Pipeline

        3.1 Pipeline Overview

        The Snakemake workflow has a multiple options:

        Usage: bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle -m/--runmode=<RUNMODE> -w/--workdir=<WORKDIR>
        +1.  RUNMODE: [Type: String] Valid options:
        +    *) init : initialize workdir
        +    *) run : run with slurm
        +    *) reset : DELETE workdir dir and re-init it
        +    *) dryrun : dry run snakemake to generate DAG
        +    *) unlock : unlock workdir if locked by snakemake
        +    *) runlocal : run without submitting to sbatch
        +    *) testrun: run on cluster with included test dataset
        +2.  WORKDIR: [Type: String]: Absolute or relative path to the output folder with write permissions.
        +

        3.2 Commands explained

        The following explains each of the command options:

        • Preparation Commands
        • init (REQUIRED): This must be performed before any Snakemake run (dry, local, cluster) can be performed. This will copy the necessary config, manifest and Snakefiles needed to run the pipeline to the provided output directory.
        • dryrun (OPTIONAL): This is an optional step, to be performed before any Snakemake run (local, cluster). This will check for errors within the pipeline, and ensure that you have read/write access to the files needed to run the full pipeline.
        • Processing Commands
        • local: This will run the pipeline on a local node. NOTE: This should only be performed on an interactive node.
        • run: This will submit a master job to the cluster, and subsequent sub-jobs as needed to complete the workflow. An email will be sent when the pipeline begins, if there are any errors, and when it completes.
        • Other Commands (All optional)
        • unlock: This will unlock the pipeline if an error caused it to stop in the middle of a run.
        • testrun: This will run a test of the pipeline with test data

        To run any of these commands, follow the the syntax:

        bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=COMMAND --workdir=/path/to/output/dir
        +

        3.3 Typical Workflow

        A typical command workflow, running on the cluster, is as follows:

        bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=init --workdir=/path/to/output/dir
        +
        +bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=dryrun --workdir=/path/to/output/dir
        +
        +bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=run --workdir=/path/to/output/dir
        +

        Last update: 2023-09-07
        \ No newline at end of file diff --git a/user-guide/test-info/index.html b/user-guide/test-info/index.html new file mode 100644 index 00000000..eaa4eb0e --- /dev/null +++ b/user-guide/test-info/index.html @@ -0,0 +1,33 @@ + 5. Running Test Data - CHAMPAGNE

        This should walk the user through the steps of running the pipeline using test data

        5. Pipeline Tutorial

        Welcome to the CARLISLE Pipeline Tutorial!

        5.1 Getting Started

        Review the information on the Getting Started for a complete overview the pipeline. The tutorial below will use test data available on NIH Biowulf HPC only. All example code will assume you are running v1.0 of the pipeline, using test data available on GitHub.

        A. Change working directory to the CARLISLE repository

        B. Initialize Pipeline

        bash ./path/to/dir/carlisle --runmode=init --workdir=/path/to/output/dir
        +

        5.2 About the test data

        This test data consists of sub-sampled inputs, consisting of two pairs of two replicate samples and one control. The reference to be used is hg38.

        5.3 Submit the test data

        Test data is included in the .test directory as well as the config directory.

        A Run the test command to prepare the data, perform a dry-run and submit to the cluster

        bash ./path/to/dir/carlisle --runmode=testrun --workdir=/path/to/output/dir
        +
        • An expected output for the testrun is as follows:
        Job stats:
        +job                              count    min threads    max threads
        +-----------------------------  -------  -------------  -------------
        +DESeq                                  24              1              1
        +align                                   9             56             56
        +alignstats                              9              2              2
        +all                                     1              1              1
        +bam2bg                                  9              4              4
        +create_contrast_data_files             24              1              1
        +create_contrast_peakcaller_files       12              1              1
        +create_reference                        1             32             32
        +create_replicate_sample_table           1              1              1
        +diffbb                                 24              1              1
        +filter                                 18              2              2
        +findMotif                              96              6              6
        +gather_alignstats                       1              1              1
        +go_enrichment                          12              1              1
        +gopeaks_broad                          16              2              2
        +gopeaks_narrow                         16              2              2
        +macs2_broad                            16              2              2
        +macs2_narrow                           16              2              2
        +make_counts_matrix                     24              1              1
        +multiqc                                 2              1              1
        +qc_fastqc                               9              1              1
        +rose                                   96              2              2
        +seacr_relaxed                          16              2              2
        +seacr_stringent                        16              2              2
        +spikein_assessment                      1              1              1
        +trim                                    9             56             56
        +total                                 478              1             56
        +

        5.4 Review outputs

        Review the expected outputs on the Output page. If there are errors, review and performing stesp described on the Troubleshooting page as needed.


        Last update: 2023-09-07
        \ No newline at end of file diff --git a/user-guide/troubleshooting/index.html b/user-guide/troubleshooting/index.html new file mode 100644 index 00000000..dacda7cf --- /dev/null +++ b/user-guide/troubleshooting/index.html @@ -0,0 +1,9 @@ + Troubleshooting - CHAMPAGNE

        This should include basic information on how to troubleshoot the pipeline. It should also include the main pipeliner developers contact information for users to utilize, as needed.

        Troubleshooting

        Recommended steps to troubleshoot the pipeline.

        1.1 Email

        Check your email for an email regarding pipeline failure. You will receive an email from slurm@biowulf.nih.gov with the subject: Slurm Job_id=[#] Name=CARLISLE Failed, Run time [time], FAILED, ExitCode 1

        1.2 Review the log files

        Review the logs in two ways:

        1. Review the master slurm file: This file will be found in the /path/to/results/dir/ and titled slurm-[jobid].out. Reviewing this file will tell you what rule errored, and for any local SLURM jobs, provide error details
        2. Review the individual rule log files: After reviewing the master slurm-file, review the specific rules that failed within the /path/to/results/dir/logs/. Each rule will include a .err and .out file, with the following formatting: {rulename}.{masterjobID}.{individualruleID}.{wildcards from the rule}.{out or err}

        1.3 Restart the run

        After addressing the issue, unlock the output directory, perform another dry-run and check the status of the pipeline, then resubmit to the cluster.

        #unlock dir
        +bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=unlock --workdir=/path/to/output/dir
        +
        +#perform dry-run
        +bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=dryrun --workdir=/path/to/output/dir
        +
        +#submit to cluster
        +bash ./data/CCBR_Pipeliner/Pipelines/CARLISLE/carlisle --runmode=run --workdir=/path/to/output/dir
        +

        1.4 Contact information

        If after troubleshooting, the error cannot be resolved, or if a bug is found, please create an issue and send and email to Samantha Chill.


        Last update: 2023-09-07
        \ No newline at end of file