Pomoc w zadaniu zaliczeniowym - cięcie ciągu znaków i wgrywanie pliku

0

Hej! Jesteście chyba moją ostatnią nadzieją. Uprzedzam jednak, że w ogóle w tym nie siedzę i mój specjalistyczny język może być ubogi. Mam zadanie na zaliczenie przedmiotu, które brzmi: Rozszczepienie wczytanej z pliku sekwencji aminokwasowej lub nukleotydowej w podanej przez użytkownika pozycji i zapisanie tak powstałych dwóch sekwencji w formacie FASTA w dwóch plikach. Sekwencje winny również być wydrukowane na ekranie.
I mam kilka problemów...

  1. Plik z sekwencją ma być wgrany przez użytkownika programu. Jaką komendę trzeba wydać, i co potem wpisać w "czarne okienko", by na ekranie została wydrukowana treść pliku?
  2. Wiem jak ciąć łańcuch mając w nim znaki specjalne itd. A potrzebuję, żeby cięło w konkretnym miejscu podanym jako liczba. Np. Tnij łańcuch po 6 znaku.
  3. Jak potem zapisać obie sekwencje w osobnych plikach?
    Z góry dziękuję za odpowiedzi.
1

Jak ma być wgrany? Użytkownik pisze w konsoli: <script_name> <file_name>? To wtedy zgodnie z tym https://www.tutorialspoint.com/python/python_command_line_arguments.htm, po czy Otwierasz plik, itd.
Co do podziału łańcucha, przyjdzie on jako string a te, w pythonie, są indeksowane i obsługują "slicing":
str1 = "ABCDGTEEE"
str1[:2] -> "AB"
str1[3:] -> "DGTEEE"
str1[1:3] -> "BC"
https://realpython.com/python-strings/#string-slicing
Czytanie i zapisywanie do pliku (jak coś): https://www.pythonforbeginners.com/files/reading-and-writing-files-in-python

1
  1. Mogłabyś napisać z jakiego przedmiotu oraz jakich studiów pochodzi to zadanie?
  2. Jak rozumiem zadanie: "Rozszczepienie wczytanej z ..." jest tylko otoczką. Jest to forum programistyczne, nie wydaje mi się żeby osoby które pracują w pythonie w codziennej pracy zajmowały się takimi zadaniami - aka nie jest im znana ta domena / nomenklatura. Opisz proszę zadanie "na chłopski rozum" - najlepiej jakbyś dodała co jest danymi wejściowymi - ale dokładnie (czy są to pliki txt jeśli tak jaki format danych)
0

Przedmiot to programowanie w bioinformatyce, studia biofizyka medyczna. Pierwszy raz w życiu mam z tym styczność, mieliśmy tylko dwoje zajęć i żadnych konkretów a na zaliczenie takie cuda :(
Postaram się wytłumaczyć. Sekwencja, czyli ciąg znaków bez spacji i znaków specjalnych. Nukleotydowa to np: AGCATGACAGATACGA a aminokwasowa to np. MHJDPIXVNMZ. I teraz tak, taką sekwencję mam podaną w pliku tekstowym. Musi ona zostać wydrukowana na ekranie. Następnie musi ona zostać przecięta w miejscu podanym przez użytkownika. W efekcie powstają dwie sekwencje a każda ma zostać zapisana jako plik txt.

lubie_programowac napisał(a):
  1. Mogłabyś napisać z jakiego przedmiotu oraz jakich studiów pochodzi to zadanie?
  2. Jak rozumiem zadanie: "Rozszczepienie wczytanej z ..." jest tylko otoczką. Jest to forum programistyczne, nie wydaje mi się żeby osoby które pracują w pythonie w codziennej pracy zajmowały się takimi zadaniami - aka nie jest im znana ta domena / nomenklatura. Opisz proszę zadanie "na chłopski rozum" - najlepiej jakbyś dodała co jest danymi wejściowymi - ale dokładnie (czy są to pliki txt jeśli tak jaki format danych)
1

Dzięki za komentarz, oto chodziło. Mogłabyś napisać czy sekwencja nukleotydowa zawsze składa się z 16 liter a aminokwasowa z 11? Jeśli nie to jaka jest maksymalna długość sekwencji wejściowej?

Część: Następnie musi ona zostać przecięta w miejscu podanym przez użytkownika. W efekcie powstają dwie sekwencje a każda ma zostać zapisana jako plik txt. Dla przykładu: w pliku wejściowym mamy sekwencję AGCATGACAGATACGA, użytkownik podał punkt przecięcia 4, to czy wynikiem tej operacji będą dokładnie sekwencje: AGCA oraz TGACAGATACGA?

0

Liczba znaków w jakiejkolwiek sekwencji jest nieokreślona, może mieć nawet kilka tysięcy. Moja w pliku ma akurat 48.
Tak, jeśli użytkownik poda tnij po 4tym znaku to będzie tak to wyglądało.

lubie_programowac napisał(a):

Dzięki za komentarz, oto chodziło. Mogłabyś napisać czy sekwencja nukleotydowa zawsze składa się z 16 liter a aminokwasowa z 11? Jeśli nie to jaka jest maksymalna długość sekwencji wejściowej?

Część: Następnie musi ona zostać przecięta w miejscu podanym przez użytkownika. W efekcie powstają dwie sekwencje a każda ma zostać zapisana jako plik txt. Dla przykładu: w pliku wejściowym mamy sekwencję AGCATGACAGATACGA, użytkownik podał punkt przecięcia 4, to czy wynikiem tej operacji będą dokładnie sekwencje: AGCA oraz TGACAGATACGA?

1

Jeśli nie masz zainstalowanego środowiska do programowania to polecam zainstalować PyCharm Community. Tutaj masz opisane jak to zrealizować: https://www.youtube.com/watch?v=NN5Pht2FRWs Co do Twojego zadania tak jak napisał wcześniej lion137 warto użyć wbudowanej funkcjonalności "slicking". Na tej stronie możesz wypróbować tę funkcjonalność online: https://www.learnpython.org/en/Basic_String_Operations

1
str1 = "ABCDGTEEE"
print("podaj")
i = int(input())
print("podaj")
p = int(input())
print(str1[i:p])
t = str1[i:p]
t2= str1[:i] + str1[p:]
with open('t.txt', 'w') as czesc1:
    czesc1.write(t)
with open('t2.txt', 'w') as czesc2:
    czesc2.write(t2)

Proszę

0

Dziękuję wszystkim! Łącząc wszystkie Wasze siły dałam radę wykonać zadanie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1