Пример #1
0
 def ins_tag(self,tag_seq,protease_seq,ins_name,ins_sites,side=5): #the cutpoint is after ins_sites[0] bp and after ins_sites[1] bp
     from Bio.Alphabet import IUPAC
     from Bio.Seq import Seq
     from Bio.SeqRecord import SeqRecord
     for feature in self.record.features:
         if feature.qualifiers.has_key("note")\
         and re.search(r"^mcs",feature.qualifiers["note"][0],re.I):
             mcs_start=int(str(feature.location.start))
             mcs_end=int(str(feature.location.end))
             mcs_qualifiers=feature.qualifiers
     if ins_sites[0]>mcs_start and ins_sites[1]<mcs_end:
         f_mcs=SeqFeature(FeatureLocation(mcs_start,
             mcs_end+ins_sites[0]-ins_sites[1]+len(tag_seq+protease_seq)),type="mcs")
         f_mcs.qualifiers=mcs_qualifiers
     if side==5:
         ins_record=SeqRecord(Seq(tag_seq+protease_seq,IUPAC.ambiguous_dna))
         f=SeqFeature(FeatureLocation(0,len(tag_seq)),type="tag")
     elif side==3:
         ins_record=SeqRecord(Seq(protease_seq+tag_seq,IUPAC.ambiguous_dna))
         f=SeqFeature(FeatureLocation(len(protease_seq),len(protease_seq+tag_seq)),type="tag")
     f.qualifiers["note"]=[ins_name,]
     ins_record.features=[f]
     old_name=self.record.name
     self.record=self.record[:ins_sites[0]]+ins_record+self.record[ins_sites[1]:]
     self.record.name=old_name
     self.whole_len=len(self.record)
     self.record.features.append(f_mcs)
     self.record.features=sorted(self.record.features,key=lambda x:int(str(x.location.start)))
Пример #2
0
    def ins_insert(self,vec_5_site,utr_5_seq,ins_seq,utr_3_seq,vec_3_site,ins_name):
        from Bio.Alphabet import IUPAC
        from Bio.Seq import Seq
        from Bio.SeqRecord import SeqRecord
        ins_record=SeqRecord(Seq(utr_5_seq+ins_seq+utr_3_seq,IUPAC.ambiguous_dna))

        f_i=SeqFeature(FeatureLocation(len(utr_5_seq),len(utr_5_seq)+len(ins_seq)),type="insert")
        f_i.qualifiers["note"]=[ins_name,]
        ins_record.features=[f_i]
        old_name=self.record.name
        for feature in self.record.features:
            if feature.qualifiers.has_key("note")\
            and re.search(r"^mcs",feature.qualifiers["note"][0],re.I):
                mcs_start=int(str(feature.location.start))
                mcs_end=int(str(feature.location.end))
                mcs_qualifiers=feature.qualifiers
        self.record=self.record[:vec_5_site]+ins_record+self.record[vec_3_site:]
        f_mcs=SeqFeature(FeatureLocation(mcs_start,
            vec_5_site+len(utr_5_seq+ins_seq+utr_3_seq)+mcs_end-vec_3_site),type="mcs")
        f_mcs.qualifiers=mcs_qualifiers
        self.record.features.append(f_mcs)
        self.record.features=sorted(self.record.features,key=lambda x:int(str(x.location.start)))
        self.record.name=old_name
        self.whole_len=len(self.record)