My PI filed a patent for the alignment algorithm I spent eighteen months coding, telling me the exposure would be good for my career.

My PI filed a patent for the alignment algorithm I spent eighteen months coding, telling me the exposure would be good for my career.
My name is Naomi Chen.
I am a postdoctoral bioinformatician.
Dr. Martin Shaw filed the patent.
He does not know how to read a GitHub commit history.
He claimed he wrote the logic.
He does not even have a compiler installed on his laptop.
On a Wednesday morning I sat in the third basement of the Albright Genetics Building at the workstation I had occupied for two years.
The basement had no windows.
The basement had high-density compute racks behind a glass wall on the north side and a coffee station in the corner.
The basement had four post-doctoral workstations in a row along the east wall.
Mine was on the end nearest the racks.
I was optimizing a legacy Python script that the lab inherited from a former grad student.
The script aligned short-read DNA sequences against a reference genome.
The original implementation used four nested for loops and ran in four hours and seven minutes on a benchmark of one hundred thousand reads.
I rewrote the inner loop as a vectorized NumPy operation that pre-computed the seed index using a hash table.
I added a multiprocessing pool for the outer alignment scan.
I cleaned the variable names.
I documented the new function with a docstring describing the time complexity in big-O notation.
I ran the benchmark.
The new implementation ran in eleven seconds.
I committed the change to my GitHub repository with a precise message describing the substitution and the speedup.
The commit hash was the SHA of the new state of the codebase.
The commit timestamp said nine seventeen Wednesday morning.
The repository was private.
The repository was named align-fast.
The repository had two hundred and forty-one commits over the previous eighteen months.
I had been keeping a clean commit history since undergrad.
I had been keeping it since a partner on a group project at Carnegie Mellon had deleted our shared codebase three days before submission to spite me for ending an argument.
I had recovered most of the code by reconstructing it from memory.
I had also promised myself I would never lose the proof of my own work again.
I did not write code without git.
I did not commit code without a message.
I did not push to a public repository before I had reviewed every line.
That is the difference between a person who codes and a person who works in computational research.
The code is the easy part.
The history of the code is the work.
I went upstairs to the second-floor break room for a fresh coffee.
I sat at the small round table with my phone.
I opened the bioRxiv preprint server out of habit.
The preprint feed showed three new papers in computational genomics.
The first was from a Stanford lab on chromatin folding.
The second was from a Cambridge group on transcript quantification.
The third was from Dr. Martin Shaw’s laboratory.
The third was titled, A Novel Vectorized Approach to Short-Read Alignment with Sub-Linear Scaling.
The third was twenty-two pages.
The third had been posted to bioRxiv on Tuesday afternoon at four eleven.
The third listed Dr. Martin Shaw as the sole first and corresponding author.
The third listed Naomi Chen in the acknowledgments under technical assistance with code maintenance.
I sat with the phone for thirty-eight seconds before I scrolled down the abstract.
The abstract described a vectorized seed-index alignment approach that reduced compute time on a standard benchmark of one hundred thousand reads from four hours to twelve seconds.
Twelve seconds was the number I had used in my lab meeting slide deck three months earlier as my approximate benchmark figure.
Twelve seconds was the rounded version of eleven point three two seconds.
The methodology section described the exact pre-computation strategy I had committed in my repository.
The methodology section described the multiprocessing pool implementation in detail.
The methodology section referenced a recursive backtracking helper function I had written on a Tuesday at two in the morning eighteen months earlier when the lab was empty and I had finally broken through the logic block that had been blocking me for a week.
Line four twelve of the script was the recursive function.
I did not call Dr. Shaw from the break room.
I went back to the basement.
I sat at my workstation.
I opened my git log on the local clone.
I scrolled to the commit from eighteen months earlier dated a Tuesday at two oh four in the morning.
The commit message was, fixed recursive descent in seed_extend, line 412.
I scrolled further back through the history.
The repository showed two hundred and forty commits before the preprint had been posted.
The commits spanned the date range from my first day at the Shaw lab to the day before the preprint upload.
Every commit was signed with my GitHub identity.
Every push originated from the IP address of my workstation in the third basement.
The repository had no contributors other than me.
The repository was set to private.
Dr. Shaw had been added as a collaborator with read access in month three of my post-doc.
Dr. Shaw had not pushed a single commit.
Dr. Shaw had not opened a pull request.
Dr. Shaw had cloned the repository exactly twice.
The first clone was on the day I had added him.
The second clone was on Monday of this week.
Monday was the day before the preprint upload.
I closed the git log.
I sat in the chair.
The basement was quiet.
The compute racks behind the glass wall were humming.
The other three post-doctoral workstations on the east wall were empty.
The lab was always empty at nine thirty on a Wednesday morning because the rest of the team did not arrive until after ten.
I picked up the lab phone.
I dialed Dr. Shaw’s office on the fourth floor.
He picked up on the third ring.
He used my first name.
Naomi, he said.
You saw the preprint.
I said, Martin, my name is in the acknowledgments.
He paused.
He said, Naomi.
He said, I needed to rush the patent filing before the journal deadline.
He said, the ideas grew out of the lab’s grant funding, so I filed it under my name to streamline the process.
He said, you will get great exposure when we commercialize.
He said, this is good for you.
I told him I would think about how to respond to that.
I hung up.
I sat at my workstation.
I did not open the preprint again.
I did not need to.
I opened a fresh document in my text editor.
I titled it research-misconduct-packet.md.
I started writing.
I listed the timeline.
First commit on the repository.
Eighteen months ago.
First demo of the speedup to Dr. Shaw.
Twelve months ago.
The lab meeting slide deck with the twelve-second benchmark.
Three months ago.
Dr. Shaw’s clone of my repository.
Monday afternoon at three twelve.
The preprint upload.
Tuesday afternoon at four eleven.
The phone call.
This morning.
I exported the full git log to a separate file with all commit hashes, author identifiers, timestamps, and commit messages.
I exported the GitHub repository activity log showing the two clone events from Dr. Shaw’s account.
I exported the IP address log showing all pushes originating from my workstation.
I exported the server access log from the lab’s compute cluster.
The compute cluster recorded which user account had submitted which job.
Eighteen months of cluster logs showed two hundred and forty-seven alignment benchmark runs.
Two hundred and forty-six of them were under my account.
One of them was under a shared lab service account that anyone could submit jobs through.
None of them were under Dr. Shaw’s account.
I exported the workstation login history.
Dr. Shaw had logged into a workstation in the basement zero times in the past eighteen months.
Dr. Shaw’s office computer ran a stock Windows install with no Python interpreter, no compiler toolchain, no git client, and no scientific Python libraries.
I knew the contents of Dr. Shaw’s office computer because I had set it up for him myself in month two of my post-doc when his prior laptop had crashed.
He had taken the new machine in stock configuration.
He had never asked me to install development tools because he did not write code.
He had not written a line of code since two thousand four.
He had become a writer of grants and a director of other people’s code.
I printed the document and the appendices.
The full packet ran ninety-four pages.
I sealed three copies in three manila envelopes.
One for the university Office of Research Integrity.
One for the editor of the journal where Dr. Shaw had submitted the preprint.
One for my own files at the apartment.
I opened my email.
I wrote a short message to the Office of Research Integrity intake address.
The message subject line was, formal complaint of research misconduct and unauthorized patent filing.
The message body listed Dr. Shaw, the preprint title, the bioRxiv DOI, the patent application number, and a request for an investigation.
The message attached the ninety-four-page packet.
I sent the email at eleven oh six.
I copied the email to my personal inbox.
I copied the email to the lab manager so the complaint would be on the institutional record by lunch.
I did not copy Dr. Shaw.
I closed the laptop.
I walked to the lab meeting room.
The lab meeting room held a small table with eight chairs.
The table had a glass surface with the marks of two years of dry-erase practice on it.
The table held a single coffee mug with the residue of yesterday’s coffee.
The wall held a flat-panel monitor and a whiteboard.
I sat at the chair I usually sat in.
I sat for a long count.
I thought about the preprint.
I thought about the recursive function on line four twelve.
I thought about the night I had written it.
I thought about the hour I had sat at the workstation at two in the morning eating cold tofu from the takeout container on my desk while the codebase compiled.
I thought about the moment I had figured out the recursion would terminate cleanly on the seed_extend boundary condition because I had been thinking about how slime mold solves shortest paths in nature.
I thought about the commit message I had written.
I thought about the silent third-basement air conditioning hum.
I thought about Dr. Shaw on the fourth floor.
I had asked Dr. Shaw to be my post-doctoral advisor because he had been a respected name in computational genomics for fifteen years.
I had asked because the lab had a strong publication record.
I had asked because his recommendation letter to fellowship committees was valued in the field.
I had asked because I had been twenty-eight years old and looking for a place to do five more years of work that would matter.
I had also asked because he had told me in the interview that the post-docs in his lab were collaborators, not technicians.
He had said this as he had poured me a coffee from the office pot.
He had said it the way a man says a thing he has been saying for years.
He had been saying it the way Bradley Finch had been saying that wholesale buyers needed to see him on the floor.
I had not known about Bradley Finch yet.
I had been twenty-eight years old.
I had heard collaborator the way a twenty-eight-year-old hears the word.
He had filed a patent he did not understand using code he could not compile.
The cold pause in the lab meeting room was not silence.
The cold pause was the air conditioning.
The cold pause was the dry-erase smudge on the table.
The cold pause was the steady working of my own thinking, separating what I had wanted to believe about Dr. Shaw from what was actually true about Dr. Shaw.
The exposure he had offered would be good for my career.
The patent application he had filed would be retracted.
The seminar he had on the schedule for Friday afternoon would be the seminar where this would end.
I had eight days before the seminar.
I had ninety-four pages of evidence.
I had the recursive function on line four twelve.
I had every commit hash for eighteen months and a server log that showed Dr. Shaw had never run the script he claimed he had written.
I had enough.
I stood up from the lab meeting room chair.
I walked back to the basement.
I sat at my workstation.
I opened a new branch in my repository.
I named the branch shaw-misconduct.
I committed the misconduct packet into the branch.
I pushed.
The commit timestamp said eleven thirty-three on Wednesday morning.
The commit message said, evidence packet preserved.
The Office of Research Integrity acknowledged receipt of my complaint on Thursday at nine fifteen.
The intake officer was a woman named Dr. Eun-Ji Roh who had run the office for nine years.
She asked me to come to her office at one in the afternoon.
She asked me to bring a laptop with the live repository on it.
She asked me to be available to walk through the git history with two members of the standing research integrity committee.
I sat in her office at one oh one.
The standing committee members were a senior professor of biochemistry named Dr. Cyrus Reno and a senior professor of computer science named Dr. Marisol Estevez.
Dr. Estevez had run an academic open-source project for fifteen years.
Dr. Estevez knew git.
Dr. Estevez had asked me to clone the repository onto a clean machine she had brought to the meeting and to run a git log with cryptographic verification.
I cloned the repository onto her machine.
I ran the verification.
The verification confirmed every commit hash matched the cryptographic chain.
The verification confirmed every author signature matched my GitHub identity.
The verification confirmed the chain had not been retroactively edited.
Dr. Estevez looked at Dr. Reno.
Dr. Reno looked at Dr. Roh.
Dr. Roh said, the seminar is tomorrow at three.
I said, I know.
She said, the office will not block the seminar.
She said, the office will not warn Dr. Shaw before the seminar.
She said, the office will be present in the seminar room.
She said, the office will allow the seminar to proceed.
She said, after the seminar, the office will issue a preliminary finding.
She said, Ms. Chen.
She said, you may attend the seminar.
She said, you may raise questions during the Q and A portion if you choose to.
She said, the office has no jurisdiction over what you say during a public Q and A.
I said, I would like to attend.
She said, good.
I walked out of her office at one forty.
I went back to the basement.
I worked on a different project the rest of Thursday.
Friday afternoon at two forty-five I walked to the third-floor lecture hall.
The lecture hall held one hundred and forty tiered seats.
The hall was three quarters full at two forty-five.
Faculty in the front rows.
Post-docs in the middle.
Graduate students in the back.
Two visiting scholars from Singapore at the right aisle.
Dr. Roh sat in the third row on the left aisle.
Dr. Estevez sat beside her.
Dr. Reno sat beside Dr. Estevez.
I sat in the back row on the right aisle.
Dr. Shaw walked to the podium at three oh one.
He wore a navy blazer.
He carried a presenter remote.
He thanked the department chair for the introduction.
He thanked the visiting scholars for their attendance.
He launched the slide deck.
The slide deck had a title slide showing the preprint title.
The slide deck had thirty-eight slides.
The slide deck walked through the conceptual breakthrough of the vectorized seed-index approach.
The slide deck included a code listing slide with the recursive function from line four twelve on screen.
The slide deck did not name a coding language explicitly.
The slide deck described the recursive function as quote a novel recursive backtracking approach end quote.
Dr. Shaw paced at the front of the room.
He smiled.
He used his hands.
He clicked through the slides.
He spent twenty-eight minutes on the conceptual content.
He invited questions at three twenty-nine.
The first question came from a senior faculty member in the second row.
The question was about implementation language choice.
Dr. Shaw said the implementation was in Python.
He said this without hesitation.
I raised my hand in the back row.
Dr. Shaw saw me.
He smiled.
He nodded.
He said, yes, Naomi.
I stood up.
I said, Dr. Shaw, can you walk us through the recursive function on the code listing slide.
I said, specifically the termination condition on the seed_extend boundary.
Dr. Shaw paused.
He said, of course.
He said, the recursive function terminates when the seed extension reaches a stop condition based on the alignment score threshold.
I said, the function on the slide has a slime mold shortest-path termination condition.
I said, the function terminates on a topological convergence test, not a score threshold.
Dr. Shaw paused.
He said, the implementation contains both.
He said, the slide shows a simplified version.
I said, the code on the slide is the implementation.
I said, the simplified version is not in the repository.
I said, the recursive function on the slide is the function I committed to my private repository at two oh four in the morning eighteen months ago.
The room went still.
Dr. Shaw said, Naomi.
He said, we can take this offline.
He said, the public seminar is not the place to litigate authorship questions.
I said, I have a different question.
I said, Dr. Shaw, can you run the script.
I said, here on this laptop, in front of this room, on this benchmark of one hundred thousand reads.
I lifted my laptop from the seat beside me.
Dr. Shaw did not move from the podium.
I said, Dr. Shaw, you do not have a Python interpreter installed on your office computer.
I said, the lab cluster shows you have never submitted an alignment job.
I said, the server compile logs show you have never executed the codebase.
I said, you cannot run the script you say you wrote.
I said, you wrote a slide deck.
I said, you did not write a recursive function.
Dr. Roh stood up from the third row.
She said, ladies and gentlemen.
She said, the Office of Research Integrity has been investigating an authorship complaint on this preprint since Thursday morning.
She said, the seminar will conclude.
She said, the office will issue a preliminary finding by close of business.
Dr. Shaw stammered something about collaborative efforts and shared resources.
He clicked the remote.
The slide advanced to a blank page.
He clicked again.
The slide advanced past the conclusions slide to the acknowledgments slide.
The acknowledgments slide had my name on it under technical assistance.
He shut the laptop.
He stepped down from the podium.
He walked up the center aisle without looking at any of the rows.
He pushed open the rear door of the lecture hall.
The door closed behind him.
The room sat in silence for eight seconds.
A graduate student in the third row started to clap.
He stopped after one clap.
The hall did not pick it up.
The hall sat in silence again.
Dr. Roh looked at me from the third row.
She nodded once.
The Office of Research Integrity issued the preliminary finding at five forty-one Friday afternoon.
The finding stated that the preprint authored by Dr. Martin Shaw on bioRxiv had been determined to constitute research misconduct under the university’s authorship standards.
The finding stated that the patent application filed by Dr. Shaw on the alignment algorithm had been submitted to the university’s Office of Technology Transfer for review and that Naomi Chen would be added as the primary inventor on the basis of the cryptographic commit history.
The finding stated that the journal that had received the manuscript submission would be notified.
The finding stated that Dr. Shaw was suspended pending a full investigation.
The finding stated that all post-doctoral and graduate trainees currently in Dr. Shaw’s lab would be reassigned to new advisors.
The finding did not list the reassigned trainees by name.
The finding was forwarded to my email at six oh seven.
I read it once at my workstation in the basement.
I sent a copy to my parents at six twelve so they could read it before the rest of the week complicated everything.
My mother responded within twenty minutes saying she had read it twice.
She said, Naomi, I am proud of you.
She said, your father is making me tell you that you are welcome to come home for a weekend.
She said, he does not say that often.
I knew this.
I closed the email.
I sat at my workstation.
The lab was empty.
The other three post-doctoral workstations were empty.
The compute racks behind the glass wall were humming.
The motion-sensor lights had dimmed to half intensity because no one had moved in the basement for ninety minutes.
I had not been reassigned yet.
The reassignment process at this university typically took three to six months.
The reassignment process required a faculty member willing to take on a post-doc mid-project.
The reassignment process required the post-doc’s project to be portable.
The reassignment process required reference letters from the prior advisor.
Dr. Shaw was suspended.
Dr. Shaw was not going to write reference letters.
Dr. Shaw was not going to be available for project handoff conversations.
Dr. Shaw’s lab was effectively dissolved as of Monday morning.
The alignment algorithm patent would have my name on it.
The patent would generate some royalty income if the university licensed it to a commercial partner.
The royalty timeline at this university was typically two to four years before any check reached an inventor.
The remaining seven months of my post-doctoral contract would be paid.
The university Office of Research Integrity policy provided continuity of pay during a reassignment.
The remaining seven months would let me finish writing the manuscript that should have been the preprint Dr. Shaw had filed under his own name.
The remaining seven months would let me apply for faculty positions for the following academic cycle.
The remaining seven months would also be the loneliest professional period of my career.
The senior faculty at this institution would treat me with a mix of respect and wariness.
They would respect the technical evidence.
They would also recognize that I had ended a senior colleague’s career in a public forum.
The wariness would not be unfair.
The wariness would also be permanent.
Two of the post-docs in the lab next door had emailed me before I left the building Friday night.
Both emails were brief.
Both emails said they were sorry I was going through this.
Neither email said they would write me a reference letter.
Neither email said they would speak in support of me at the full investigation hearing in March.
I drove home Friday night.
I parked on the street in front of my apartment building.
I sat in the car for a long count.
I called my friend Penelope Quist, a post-doc at Columbia who had been my office mate at Carnegie Mellon.
Penelope listened to the summary.
She did not interrupt.
She said, Naomi.
She said, you did the right thing.
She said, your career is not over.
She said, your career has just become harder.
She said, there are three labs in computational genomics where you could go.
She said, one is at UCSF.
She said, one is at the Broad Institute.
She said, one is at a small institute in Tübingen.
She said, I will email the PIs at all three tomorrow morning with your name.
She said, I will tell them you are looking.
She said, I will tell them the story.
She said, the story will not hurt you with these three.
She said, the old guard will not take you.
She said, that is fine.
She said, you do not want the old guard.
I asked her how she was so certain.
She said, because the recursive function on line four twelve is on the public record now.
She said, the next ten years of computational biology graduate students will read about this seminar.
She said, the next ten years of post-docs will think twice before they hand a private GitHub repository to a PI.
She said, you did not just win a patent case.
She said, you changed the standard.
I sat in the car for another long count.
I told her I was going to make dinner.
I told her I would email her tomorrow.
I told her thank you.
I went up to my apartment.
I made a bowl of jjajangmyeon from the dried packet in the cabinet.
I ate it at the small table by the window.
I did not turn on the television.
I did not check my work email.
I did not open the laptop.
The laptop sat in its bag on the chair across from the table.
The laptop had been the tool I had used to build the algorithm.
The laptop would be the tool I would use to apply for jobs over the weekend.
The laptop would carry my whole career between buildings for the next twelve months.
The bag had been my graduate school backpack.
The bag had a small embroidered patch from a programming hackathon in Pittsburgh sewn onto the front pocket.
The patch said, commit early and commit often.
I had sewn it on myself in two thousand sixteen.
I had not thought about it in two years.
Six months later I sat in the campus coffee shop on a Tuesday afternoon scrolling through the post-doctoral position listings on the academic job aggregator.
The coffee shop was on the ground floor of the student union.
The coffee shop had cheap brown wooden tables and uneven Wi-Fi.
The coffee shop was always full of undergraduate students with open laptops.
The undergraduate students did not know me.
The undergraduate students did not know about the seminar.
The undergraduate students were doing problem sets and writing essays and texting friends.
The undergraduate students were the part of the building that worked the way the rest of the building did not.
The Broad Institute had passed in February.
UCSF had passed in March, citing internal politics in their hiring committee.
The Tübingen institute had requested a second-round interview in April and had then gone silent.
Penelope had sent three more emails to senior PIs at other institutions in May.
Two of the PIs had responded with polite declines that mentioned funding cycles.
One had not responded.
I had submitted seventeen post-doctoral applications.
I had been invited to interview for two.
I had received one offer.
The offer was for a one-year transition post-doc at a small computational biology center in Reykjavík, Iceland.
The Reykjavík center had been founded eight years earlier by a former research integrity officer at a Scandinavian university who had specifically built the lab to take on whistleblower post-docs.
The center’s principal investigator had told me on the interview call that she had read the seminar transcript from the second to last paragraph through to the end.
She had said, in her accented English, that she would like me to come work in Reykjavík for a year while I figured out the next step.
She had said the salary was modest.
She had said the lab had a clean compute cluster and a clean policy on inventor credit.
She had said the weather was bad.
She had said the people were good.
I had accepted on a Sunday evening at five forty-one Reykjavík time.
The relocation paperwork was in process.
The relocation date was the second week of August.
I had four weeks left on the third basement workstation.
The university Office of Technology Transfer had filed the corrected patent application in July with my name as the sole primary inventor.
The patent application was pending.
The university had begun preliminary licensing conversations with two commercial partners.
The royalty timeline was likely three years out.
Dr. Shaw had resigned in May.
The resignation announcement from the dean was two sentences.
The first sentence said the university was grateful for his decades of service.
The second sentence said his contributions to the field would be remembered.
The announcement did not name a successor.
The announcement did not name the misconduct finding.
The announcement did not mention the research integrity investigation.
The announcement was the standard kind of one-paragraph email a dean sends when a senior faculty member leaves under conditions the dean does not want to write down.
I did not respond to the email.
I had not seen Dr. Shaw since the seminar.
The local press picked up the patent correction story in June.
A reporter from the university newspaper had emailed me asking for an interview.
I had declined politely.
The reporter had run the story anyway based on public Office of Research Integrity documents.
The story had been picked up by a national science journalism site.
The story had run with my name and a photograph that someone had pulled from my old conference poster page.
The photograph showed me at the workstation in the third basement with the recursive function on the screen.
The photograph had been taken by Penelope at a conference in two thousand twenty-two.
I had liked the photograph at the time because it had made me look like I knew what I was doing.
The photograph in the article made me look like I had known what I was doing.
I had not corrected anyone.
I closed the job board.
I opened the laptop’s email client.
The inbox had a message from the Reykjavík PI asking about my preferred apartment district.
The inbox had a message from the university Office of Technology Transfer with a draft license agreement for the partner.
The inbox had a message from a graduate student at a different lab on campus asking whether I would be willing to talk on the phone for thirty minutes about how to set up a clean version-controlled workflow.
The graduate student had said she did not know what she was doing.
She had said she had been told to keep a paper notebook.
She had said she had read the seminar story and wanted to know if there was a better way.
I replied to the graduate student.
I said yes.
I said Thursday at four.
I closed the email.
I did not picture Dr. Shaw often.
When I did, I pictured his back as he walked up the center aisle of the lecture hall and pushed open the rear door.
The door had closed behind him.
The hall had sat in silence for eight seconds.
A graduate student in the third row had started to clap once and stopped.
The eight seconds had been the only quiet eight seconds in my entire post-doctoral career.
I had not been able to figure out, in the six months since, how to feel about those eight seconds.
The eight seconds had been the moment my whole field had read the recursive function on line four twelve and understood that the function was mine.
The eight seconds had also been the moment Dr. Shaw had left the building for the last time.
I closed the laptop.
I packed the laptop into the embroidered backpack with the hackathon patch on the front pocket.
I walked out of the coffee shop.
I walked across the quad to the third basement of the Albright Genetics Building.
I had four weeks left at the workstation.
I had a graduate student to call on Thursday.
I had a manuscript to finish.
I had a recursive function on line four twelve.
I had the proof.
