seqcode / pegr

Platform for Eukaryotic Genome Regulation
MIT License
3 stars 1 forks source link

Support for AVITI Run Manifest #313

Closed WilliamKMLai closed 7 months ago

WilliamKMLai commented 9 months ago

Add 'Download AVITI Run Manifest' button to generate attached CSV file.

Run#-PEGRid#,Index1,Reverse-Complement Index2,Lane

Lane options are 1, 2, or 1+2

image
WilliamKMLai commented 8 months ago

Header of the file should be:

[SETTINGS],,,,
SettingName,Value,Lane,,
SpikeInAsUnassigned,FALSE,,,
# Lines can be commented out with a leading # sign. ,,,,
# Read mask is set to all cycles less the last imaged (which is used for calculations),,,,
R1FastQMask,R1:Y*,1+2,,
R2FastQMask,R2:Y*,1+2,,
,,,,
# Index mask is set to default and FASTQ  not generated for Lanes 1 and 2.,,,,
I1Fastq,FALSE,1+2,,
I1Mask,I1:Y8N*,1+2,,
I1MismatchThreshold,1,1+2,,
I2Fastq,FALSE,1+2,,
I2MismatchThreshold,1,1+2,,
I2Mask,I2:Y8N*,1+2,,
,,,,
# UMI mask is set to nothing with no FASTQ generated for Lanes 1 and 2.,,,,
UmiMask,I1:N*, 1+2,,
UmiFastQ,FALSE,1+2,,
,,,,
# You can optionally trim adapters. The Elevate adapter is known so no need to specify.  In this template adapter trimming is turned off. ,,,,
AdapterTrimType, Paired-End, 1+2,,
R1AdapterTrim,FALSE,1+2,,
R1AdapterNMask,FALSE,1+2,,
R2AdapterTrim,FALSE,1+2,,
R2AdapterNMask,FALSE,1+2,,
,,,,
[RunValues],,,,
Keyname, Value,,,
Example-Custom-Key,Additional metadata can be added as a key-value pair.,,,
,,,,
[SAMPLES],,,,
SampleName,Index1,Index2,Lane,Project
# Make sure that in the Index1 and Index2 columns the index sequences for each library is in the same orientation (samples and PhiX controls).,,,,
Adept_CB1,ATGTCGCT,CTAGCTCG,1+2
Adept_CB2,CACAGATC,ACGAGAGT,1+2
Adept_CB3,GCACATAG,GACTACTA,1+2
Adept_CB4,TGTGTCGA,TGTCTGAC,1+2
WilliamKMLai commented 8 months ago

Index2 column should be reverse-complemented

WilliamKMLai commented 8 months ago
def reverseComplement(String sequence) {
    def complementMap = [A: 'T', T: 'A', C: 'G', G: 'C']
    def reversedSequence = sequence.reverse().collect { nucleotide ->
        complementMap.containsKey(nucleotide as char) ? complementMap[nucleotide as char] : nucleotide
    }.join()
    return reversedSequence
}

def dnaSequence = "ATCGATCG"
def reverseComplementedSequence = reverseComplement(dnaSequence)
println("Original sequence: $dnaSequence")
println("Reverse-complemented sequence: $reverseComplementedSequence")