Beispiel #1
0
def delGene(geneName, cutsite):

# This function asks user for a chromosomal locus, a region to be deleted, a suitable CRIPSR cutsite 
# and outputs oligos for cloning of a pL308 Cas9-gRNA vector, and ones for generating a donor DNA
# to delete the unwanted chromosomal region. Primers Lup+Rdown produce a 1kb band if deletion was
# successful. 
# part of yCRISPRv3 by [email protected]

    #GeneName=input("Name, using quotes: ")
    #cutsite=input("20-mer cut sequence, using quotes: ").upper()
    locus = genomicData[geneName][0]    
    deletion = genomicData[geneName][1]

    deletion = Seq(deletion)
     
    if deletion.find(cutsite)==-1:
        if deletion.reverse_complement().find(cutsite)==-1:
            print ("WARNING: Guide 20-mer sequence not found in deletion region.")
        
    locus=Seq(locus)
    
    index=locus.find(deletion)                  
   
    # index gives the start position within locus of the string deletion.
    # now we delete the deletion region to redefine a newlocus:
    
    newlocus=locus[0:index]+locus[index+len(deletion):]

    # note that since index starts at 0, a value of n points to, in the newlocus,
    # the first nt after the deletion. So we define the newlocus as above. Note too
    # that a string of len=40 ends at an index of 39--so we pick up at index+len-1. 
    
    Lup=newlocus[index-500:index-470]
    Rdown=newlocus[index+469:index+499].reverse_complement()

    Rtemp1 = newlocus[:index].reverse_complement()
    Rtemp2 = newlocus[index:].reverse_complement()

    rPrimer, rLength = getPrimer(Rtemp1)
    lPrimer, lLength = getPrimer(newlocus[index:])

    Rup = getOverhang(Rtemp2, rLength) + rPrimer
    Ldown = getOverhang(newlocus[:index], lLength) + lPrimer

    cutSequence=Seq("cgggtggcgaatgggacttt")+cutsite+Seq("gttttagagctagaaatagc")
    seqprimer=Seq("gacttt")+cutsite
    
    print("cut" + GeneName + "  " + cutSequence)
    print("seq" + GeneName + "  " + seqprimer)
    print("Lup" + GeneName + "del" + " " + Lup)
    print("Rup" + GeneName + "del" + " " + Rup)
    print("Ldown" + GeneName + "del" + " " + Ldown)
    print("Rdown" + GeneName + "del" + " " + Rdown)

    return Ldown, Rup
Beispiel #2
0
def cutOligos(GeneName, cutsite, DNA):
    
# This function asks user for a target cut site, and generates oligos to clone that cut site into 
# a CRISPR plasmid, and to screen for positive clones containing that cut site. It may also generate
# universal homology regions to integrate or otherwise alter that target region. 
#
# The current cut site architecture is:  >>>>> YtRNAp-HDV ribozyme- >20nt< -gRNA <<<<<

    GeneName=input("Name, using quotes: ")
    cutsite=input("20-mer cut sequence, using quotes: ")
    DNA=input("Locus sequence +/- a few kb, using quotes: ")

    if DNA.find(cutsite)==-1:                   # If cutiste sequence found in ANTISENSE
        DNA=Seq(DNA).reverse_complement()       # then reverse DNA, and turn it into a string
    
    index=DNA.find(cutsite)+16                  # index gives the start position of the string, e.g., 0. 
                                                # we add 16 since index+0=start of 20-mer, so index+16=cut site, 
                                                # 3 nt before last of 20mer
        
    Lup=DNA[index-520:index-490]                # This primer binds 500bp upstream of cut site

    
    cutSequence=Seq("cgggtggcgaatgggacttt")+cutsite+Seq("gttttagagctagaaatagc")
    seqprimer=Seq("gacttt")+cutsite
    

    print("cut" + GeneName + "  " + cutSequence)
    print("Lcolony" + GeneName + "  " + seqprimer)
    print("Lup" + GeneName + "  " + Lup)
Beispiel #3
0
def getSequences(geneName):
    from intermine.webservice import Service

    template = service.get_template('Gene_GenomicDNA')

    rows = template.rows(
        E = {"op": "LOOKUP", "value": geneName, "extra_value": "S. cerevisiae"}
    )

    count = 0
    for row in rows:
        geneSeq = Seq(row["sequence.residues"])
        locusSeq = Seq(row["chromosome.residues.locus"])

        index = locusSeq.find(geneSeq)
        locusSeq = locusSeq[index-1000:locusSeq]

        # Reduce locusSize so it is only +/- 1 kbp of geneSeq
        break

    return geneSeq, locusSeq
Beispiel #4
0
def insertGene(locusName, cutsite, insertName):

# This function asks user for a target cut site, a target locus, and a DNA sequence to be inserted.
# The function outputs primers to allow one to PCR the insert with homology to the cut site. The final
# integration happens 17nt from the cut site in both direction, such that a 34nt region is deleted.
# The current cut site architecture is:  >>>>> YtRNAp-HDV ribozyme- >20nt< -gRNA <<<<<
    """
    locusName=input("Locus name, using quotes: ")
    cutsite=input("20-mer cut sequence, using quotes: ").upper()
    insertName=input("Name of gene to be inserted, using quotes: ")
    """
    locus = genomicData[locusName][0]
    insert = genomicData[locusName][1]

    if locus.find(cutsite)==-1:                   # If cutsite sequence found in ANTISENSE
        locus=Seq(locus).reverse_complement()     # then reverse DNA, and turn it into a string
    
    index=locus.find(cutsite)                     # index gives the start position of cutsite within locus

    Rtemp1 = locus[:index].reverse_complement()
    Rtemp2 = insert.reverse_complement()

    rPrim, rLength = getPrimer(Rtemp1)
    lPrim, lLength = getPrimer(locus[index+34:])

    Rup = getOverhang(Rtemp2, rLength) + rPrim        # This is the sequence to the left of the insertion
    Ldown = getOverhang(insert, lLength)  + lPrim                         # This is the sequence to the right of the insertion 

    Lhom=locus[index-60:index]
    Rhom=Seq(locus[index+34:index+94]).reverse_complement()
    
    print("L_" + insertName + "_:" + locusName + " " + Lprimer)
    print("R_" + insertName + "_:" + locusName + " " + Rprimer)
    print("Lext:" + locusName + " " + Lhom)
    print("Rext:" + locusName + " " + Rhom)

    return Rup, Ldown