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)))
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)