[Biopython] when is a SeqRecord not a SeqRecord
Hernán Morales Durand
hernan.morales at gmail.com
Tue Sep 11 09:38:12 EDT 2012
2012/7/18 Brad Chapman <chapmanb at 50mail.com>
>
> Dilara;
>
> > I'm trying to understand what is why when I print filtered_rec I get a
> > SeqRecord but if I try to access any particular attribute of a SeqRecord
> > such as letter_annotations I sometimes get an attribute error --
> > AttributeError: 'NoneType' object has no attribute
> > 'letter_annotations.'
>
> > def check_meanQ(record, q_threshold):
> > seqlen=len(record)
> > quality_scores=array(record.letter_annotations["phred_quality"])
> > if round(quality_scores.mean()) <= q_threshold:
> > print "Discarded ", record.id, "because mean Q was",
> > round(quality_scores.mean())
> > elif round(quality_scores.mean()) > q_threshold:
> > return record
>
> This function returns different results based on the comparison of
> mean quality scores to your threshold:
>
> - When it is below the threshold, it returns None (since you do not
> define an explicit return value)
> - When it is above the threshold, it returns a SeqRecord.
>
>
And of course, you may implement a Null Object Pattern here, like a
NullSeqRecord.
Cheers,
Hernán
More information about the Biopython
mailing list