2

I get this error

Traceback (most recent call last):
File "C:\Users\User1\Desktop\cellh5_scripts\ewa_pnas_fate.py", line 90,     in <module>
ec.combine_classifiers("Event labels combined")
File "C:\Users\User1\Desktop\cellh5_scripts\ewa_pnas_fate.py", line 53, in combine_classifiers
pnas_class[pnas_class==3] = 1
TypeError: 'numpy.int32' object does not support item assignment

by runing the code

def combine_classifiers(self, output_name):
    all_combined_classes = []
    for _, (plate_name, w, p, t1, t2, track_ids, track_labels) in self.mapping[['Plate', 
                                                                        'Well', 
                                                                        'Site', 
                                                                        'Gene Symbol',
                                                                        'siRNA ID', 
                                                                        'Event track ids',
                                                                        'Event track labels']].iterrows(): 
        combined_classes = []
        ch5_file_handle = self.cellh5_handles[plate_name]
        ch5_pos = ch5_file_handle.get_position(w, str(p))



        for track_id, track_label in zip(track_ids, track_labels):

            h2b_class = track_label.copy()
            print(track_id)
            pnas_class = ch5_pos.get_class_prediction('secondary__expanded')[track_id]['label_idx'] + 1
            print(pnas_class)


            inter_idx = h2b_class == 1 
            pnas_class[pnas_class==3] = 1
            pnas_class[pnas_class==2]+=2
            combined_class = h2b_class
            combined_class[inter_idx] = pnas_class[inter_idx] 
            combined_classes.append(combined_class)

        all_combined_classes.append(combined_classes)

    self.mapping[output_name] = pandas.Series(all_combined_classes) 

I print pnas_class which is 1, and track_id which is 50708. I'm wondering what the designer of code want to do in the part:

inter_idx = h2b_class == 1 
pnas_class[pnas_class==3] = 1
pnas_class[pnas_class==2]+=2
combined_class = h2b_class
combined_class[inter_idx] = pnas_class[inter_idx] 

How can I change that to have the same meaning?

2 Answers 2

2

pnas_class is a an integer so you can't select item from an integer by [pnas_class==3] = 1.

Maybe you are trying to affect 1 to pnas_class if it's equal to 3. In this case try this:

pnas_class= 1*(pnas_class == 3) + pnas_class*(pnas_class != 3 )
Sign up to request clarification or add additional context in comments.

Comments

0

Ok I found the mistake. You arer right the pnas_class should not be an integer and I know why is it integer instead of array.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.